Реализация нескольких систем входа/регистрации в Django для разных типов пользователей

Я работаю над проектом Django (приложение для доставки еды), где мне нужно реализовать несколько систем входа/регистрации для трех типов пользователей (в одном проекте): клиентов, продавцов и водителей. Каждый тип пользователей имеет свой собственный набор моделей, таких как Клиент, Продавец, Водитель, а также связанные с ними мета-моделями, такими как Seller Group / permissions / roles и т. д. Кроме того, для каждого типа существуют отдельные системы разрешений.

Моя цель - иметь различные методы входа/регистрации для каждого типа пользователей. Например:

  • Клиенты входят в систему/регистрируются с помощью мобильного OTP.
  • Продавцы входят в систему/регистрируются, используя рабочую электронную почту и пароль.

Я разделил свой проект на отдельные приложения для каждого типа пользователей (покупатели, продавцы, водители), и у меня есть пользовательские модели пользователей models.py, определенные в каждом приложении (AbstractUser, UserManager, PermissionMixins и т.д.). Но, насколько я знаю, при использовании пользовательского auth я должен определить AUTH_USER_MODEL в settings.py, где я могу упомянуть только одну модель.

Как я могу реализовать эти различные методы входа/подписки и обеспечить, чтобы процессы аутентификации и авторизации были адаптированы к каждому типу пользователей? Существуют ли пакеты Django или лучшие практики для работы с такими сценариями?

Любое руководство, примеры кода или рекомендуемые ресурсы были бы очень признательны.

Заранее спасибо!

Django следует другому методу, который заключается в том, чтобы поместить всех пользователей в одну модель и различать их по флагам, вот как он отделяет is_superuser от is_staff и обычных пользователей.

Я предлагаю объединить пользователей и разделить их полем user_role, направляющим их на разные домашние страницы.

Другим решением является расширение модели пользователя (как указано здесь), поэтому вы помещаете общие атрибуты в одну модель и создаете модель для каждой роли, чтобы вы аутентифицировали пользователей по базовой таблице.

Наконец, вы можете создать свой пользовательский бэкэнд и обработать выборку нужной таблицы для аутентификации пользователя.

Для меня первое решение - объединить их всех в одну модель и направлять на разные домашние страницы в зависимости от роли.

Вернуться на верх