Разработка класса доступа / разрешений для пользователей

Я работаю над сайтом, на котором будет несколько модулей, которые либо полностью доступны для определенных пользователей, частично доступны для других пользователей, либо недоступны для остальных.

Например:

  • «Сотрудник» может ответить на назначенные ему тикеты службы поддержки клиентов.

  • «Менеджер» может управлять всеми сотрудниками и поддерживать заявки в своей команде, включая просмотр заявок конкретного сотрудника.

  • «Администратор» может управлять всеми менеджерами, сотрудниками и заявками во всех командах, а также некоторыми другими основными функциями.

Кроме того, на некоторых страницах будут отображаться некоторые дополнительные поля, если текущий пользователь является администратором или менеджером. (Например, ссылки для удаления / отметки вещей). Они не будут показаны сотрудникам.

Я хочу создать одну модель «Разрешения», которая будет обрабатывать логику для:

  • определения, может ли пользователь получить доступ к текущей странице или нет.

  • Определение, должна ли отображаться определенная часть страницы. (Например, специальные ссылки для редактирования / удаления будут показаны только администраторам и менеджерам.)

Мне нужны некоторые рекомендации / советы по разработке этого класса, в частности, какие методы он должен иметь для выполнения второго требования.

6
задан Click Upvote 18 April 2011 в 14:03
поделиться