Суть задачи: пытаюсь реализовать настройки пользователя, в зависимости от его роли (администратор, редактор, пользователь). На данный момент эти настройки связаны исключительно с уведомлениями. Например:
Администратор может иметь следующие настройки:
Администратор+----+---------------------+----------------------------------+
| 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, и при регистрации брать все настройки для указанной категории, и сохранять их пользователю в бд. В таком случае можно будет создавать подобные настройки из админ-панели.
Какой вариант по вашему мнению более правильный, возможно, есть более хорошие примеры реализации?