@arttech01
WEB-разработчик

Как создать 2 типа пользователей в YIi2?

Есть клиенты, есть партнеры.

У клиентов определенные поля в БД, а у партнеров другие.

Суть в том, что-бы иметь 2 таблицы пользователей и если авторизовался пользователь из 'Clients' - то Yii2 его не распознавал авторизованным в модуле ('partners'). Ну и наоборот. Такое вообще возможно? (Понимаю что есть вариант создать таблицу user, с полями: email, pass, user_type - затем уже создать другие таблицы и выводить в зависимости от типа пользователя, но речь не об этом).
  • Вопрос задан
  • 203 просмотра
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Клиенты — не всегда пользователи системы.
Партнёры — не всегда пользователи системы.

Если мыслить в таком ключе, то Вам нужно разделять эти ответственности. Это будет более правильно. У вас получится система, разделенная на модули. Это позволит вам сделать независимость как на уровне кода, так и на уровне базы. Разделить свой код и базу по ответственностям.

  • Модуль Auth - Система управление аутентификацией: логин, пароль, телефон, социальные сети (для входа по соц сети), роли, разрешения ну и так далее.
  • Модуль Partners - Система управление партнёрами.
  • Модуль CRM - Система управления взаимоотношениями с клиентами.


В клиентах, партнёрах есть ссылка на user_id (аккаунт). Таким образом у вас система разделена на свои ответсвенности (модули) и каждая система решает одну определённую задачу/проблему. Ваш код становится менее связанным и более независимым.

User вам нужно чтобы только авторизоваться. А когда он авторизован вы работаете с Client или Partner. В UI интерфейсе вы делаете два личных кабинета или один с переключением (кабинет клиента, кабинет партнёра)

P.S.: Важный комментарий. Под модулями я понимаю не модули Yii, а область кода который сфокусирован для решения определённой задачи и слабо связан с другими модулями. В Yii3 модулей вообще нет. Модули могут быть разделены папками:
src/Model/User
src/Model/СRM
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Можно раздать роли разным типам пользователей и в контроллере установить права на те или иные экшены. Это делается с помощью RBAC как говорили выше. Легко гуглится, но может быть не понятен с первого раза, потому что много связей между собой. Идея такая: при регистрации пользователя ему присваивается роль. К этой роли привязано разрешение (может быть несколько.)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы