Поддерживайте два типа пользователей
У меня есть требование, где я должен поддерживать два типа пользователей.
A company and all of its users, to manage day-to-day work. And also create public data like showing a few items and related images and set availability for meetings and more.
Public user who can see the items, images. and can book the meetings.
Теперь для первого случая, каждый пользователь создается с помощью официального email и пароля как конечная точка registeruser из rest-framework. есть профиль пользователя и другие данные компании.
Для второго типа пользователей (публичных) я должен предоставить доступ для социального входа, а также для входа по электронной почте/мобильному телефону (возможно).
Я запутался, как настроить это наилучшим образом. Данные компании очень важны.
Нужно ли мне создать оба типа пользователей в одной базе данных (различая типы пользователей)? Или я должен использовать отдельную базу данных, тогда как получить данные из двух баз данных (никогда не делал этого)? Также, чтобы обезопасить мои данные от несанкционированного доступа.
Или есть лучший способ управления всеми моими требованиями, о котором я совершенно не знаю? Например, лучший подход
Ищу объяснения от опытного человека. Спасибо
Возможно, то, что вы хотите, это создать пользовательскую модель User (или даже оставить модель по умолчанию) и реализовать права доступа к представлениям/ресурсам. Это может быть реализовано с помощью групп, например, публичной группы, в которой находится каждый (может быть публичной или даже без групп) и приватной группы.
После того, как вы сможете различать пользователей, вы можете добавить ссылку на ресурс и его подресурс в группу (ForeignKey на группу) и фильтры необходимых запросов на ваше представление. На определенных представлениях вы также можете ограничить некоторые конечные точки с помощью разрешений.
Другим способом было бы использование прав доступа к объектам. В любом случае, вот ресурсы :
https://www.django-rest-framework.org/api-guide/permissions/ (и django-guardian для разрешения на уровне объекта)
и
https://docs.djangoproject.com/en/4.0/topics/auth/default/#permissions-and-authorization
Также вы можете посмотреть, как это реализовано в проекте с открытым исходным кодом, таком как Sentry: https://github.com/getsentry/sentry/blob/master/src/sentry/api/endpoints/api_applications.py