@bezdealnick

Как правильно использовать RBAC с разными моделями?

Доброго времени суток! Имеется проект, используется шаблон advanced. В backend авторизация проходит по таблице employee, во frontend авторизация по customers. Допустим, сейчас я делаю RBAC на основе employee и делаю там роли manager и admin. Но, если заказчику приспичит добавить роли и клиентам, то как можно будет выбраться из этой ситуации?
Yii использую недавно (около полугода) и с rbac до этого не работал, но если я правильно понял из документации, то из коробки нельзя организовать хранение роли в каждой из таблиц, например в employee - role = admin || manager. Там или в файлах хранится, или в бд. Помогите разобраться, меня прям в ступор вводит rbac.
  • Вопрос задан
  • 161 просмотр
Решения вопроса 2
@BorisKorobkov
Web developer
  • Users - таблица user.
  • Хранилище RBAC - PHP или DB, но в их собственных таблицах (не customers и не employee)
  • Permissions - для каждой сущности по create, view, edit, delete.
  • Roles - admin, manager, customer (это не таблицы, а просто имена)
  • User-Role - можно хардкодом сопоставить. Или всем юзерам назначить все роли в default roles, но для каждой role сделать rule, возвращающую true/false после проверки по вашим таблицам customers или employee)
Ответ написан
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Ваша таблица employee не может быть базовой для пользователей. Пользователи != сотрудники. Сотрудник может существовать без логина и пароля. Клиент может существовать без логина и пароля.

В вашем случае проще создавать таблицу users и роли создавать там. В этой таблице хранить информацию об аутентификации. Придётся часть данных из Employee перенести в User. Можно переименовать таблицу employees в users и добавить роли. Но тут уже вам решать как лучше. С точки зрения системы хранить все три сущности раздельно хорошая практика.

То что вы выбрали employees как пользователей не совсем верно. Если у вас только сотрудники и все сотрудники пользуются системой, то такой вариант может подойти. Но, как правило, сотрудники могут существовать и без логина и пароля.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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