Я работаю над сайтом, на котором будет несколько модулей, которые либо полностью доступны для определенных пользователей, частично доступны для других пользователей, либо недоступны для остальных.
Например:
«Сотрудник» может ответить на назначенные ему тикеты службы поддержки клиентов.
«Менеджер» может управлять всеми сотрудниками и поддерживать заявки в своей команде, включая просмотр заявок конкретного сотрудника.
«Администратор» может управлять всеми менеджерами, сотрудниками и заявками во всех командах, а также некоторыми другими основными функциями.
Кроме того, на некоторых страницах будут отображаться некоторые дополнительные поля, если текущий пользователь является администратором или менеджером. (Например, ссылки для удаления / отметки вещей). Они не будут показаны сотрудникам.
Я хочу создать одну модель «Разрешения», которая будет обрабатывать логику для:
определения, может ли пользователь получить доступ к текущей странице или нет.
Определение, должна ли отображаться определенная часть страницы. (Например, специальные ссылки для редактирования / удаления будут показаны только администраторам и менеджерам.)
Мне нужны некоторые рекомендации / советы по разработке этого класса, в частности, какие методы он должен иметь для выполнения второго требования.