Каким способом можно реализовать настройки пользователя, зависящие от его роли?

Суть задачи: пытаюсь реализовать настройки пользователя, в зависимости от его роли (администратор, редактор, пользователь). На данный момент эти настройки связаны исключительно с уведомлениями. Например:

Администратор может иметь следующие настройки:
Администратор
+----+---------------------+----------------------------------+
| id | name                | description                      |
+----+---------------------+----------------------------------+
| 1  | notify_new_comments | Уведомлять о новых комментариях  |
+----+---------------------+----------------------------------+
| 2  | notify_new_users    | Уведомлять о новых пользователях |
+----+---------------------+----------------------------------+

Редактор:
+----+--------------------+---------------------------------+
| id | name               | description                     |
+----+--------------------+---------------------------------+
| 1  | notify_new_posts   | Уведомлять о новых записях      |
+----+--------------------+---------------------------------+
| 2  | notify_new_comment | Уведомлять о новых комментариях |
+----+--------------------+---------------------------------+

Пользователь:
+----+----------------------------+--------------------------------------+
| id | name                       | description                          |
+----+----------------------------+--------------------------------------+
| 1  | notify_new_replies         | Уведомлять об ответах на комментарии |
+----+----------------------------+--------------------------------------+
| 2  | notify_new_comment_in_post | Уведомлять об ответах в моих постах  |
+----+----------------------------+--------------------------------------+


Примеры настроек прикрепил в виде таблицы для большей наглядности. Данные настройки я планирую хранить в json-поле БД, уже есть метод, который позволяет брать любую настройку и производить с ней любые действия.

Но я не могу решить как правильно хранить такие наборы настроек?
1 вариант: хранить просто в конфиге, под каждой ролью, при создании нового пользователя получать их так: config('user_presettings.admin);. То есть при создании нового пользователя я беру настройки, соответствующие его роли из конфига и сохраняю в БД. Но в таком случае не понятно как быть, если потребуется добавить новую настройку, скажем админам, придется писать скрипт, который всем админам добавит данную настройку в профиль.

2 вариант: хранить в бд вместе с role_id, и при регистрации брать все настройки для указанной категории, и сохранять их пользователю в бд. В таком случае можно будет создавать подобные настройки из админ-панели.

Какой вариант по вашему мнению более правильный, возможно, есть более хорошие примеры реализации?
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 3
@jazzus
Я беру из конфига/ дефолт атрибутов модели и тд. Но у меня программистские проекты) Т.е. в админке делать нечего. Если в проекте важно все делать из админки выбор очевиден. Т.е. ответ - ориентироваться на потребности проекта
Ответ написан
Gromfer
@Gromfer
Увлекаюсь Laravel
хз я бы наверное сделал таблицу отдельную и при авторизации подгружал всё в зависимости от роли. И в кэш можно положить
Ответ написан
Laravel. Иерархический RBAC для самых маленьких

Еще ни разу у меня не было повода сделать редактирование роли в админке... Дать тупому юзеру редактировать роль? Не думаю что в проектах масштаба "Laravel" стоит этим заморачиваться.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы