Определение прав пользователей

Определение прав пользователей

Права пользователя назначаются в интерфейсе управления пользователями. Пользователь принадлежит группе, для которой выставлены детализированные права на управление данными модулями, чаще всего модуль ассоциируется с объектом ORM.
На данный момент платформа поддерживает следующую детализацию прав:

  • чтение;
  • редактирование (создание /обновление);
  • удаление;
  • публикация (для объектов с версионным контролем).

Стандартные контроллеры административной части имеют несколько методов идентификации прав:

  • _checkCanEdit();
  • _checkCanDelete();
  • _checkCanPublish() (для Ccrud_Vc).

Проверка прав на чтение для поступающих запросов осуществляется автоматически в Backend_Controller. Подробное описание представлено в разделах документации:

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

Если пользователю присвоена группа, которой запрещено редактирование, то вызов метода внутри контроллера

$this->_checkCanEdit(); 

вернет JSON ошибку с текстом о недостатке прав доступа:

{success:false, msg:'У вас нет прав на модификацию данных в этой секции.'}

Так же есть дополнительные методы проверки у класса User_Admin (0.8.x) и User (0.9.x). Подробное описание класса в разделе документации User (Пользователь).

При инстанцировании пользователя объект получает список прав так, что дополнительных операций для этого не нужно.

Автоматически сгенерированный интерфейс, так же как и контроллер, отнаследованный от Backend_Controller_Crud или Backend_Controller_Crud_Vc, проверит наличие прав самостоятельно. Прибегать к собственной проверке стоит при переопределении методов базового класса или написании собственных.

Определение прав в интерфейсе (Javascript)

При запуске интерфейса модуля в глобальное пространство имен добавляются следующие переменные Javascript:

  • var canEdit,
  • var canDelete,
  • var canPublish (для Vc).

Переменные содержат булевоое значение - наличие прав текущего пользователя на операции с объектом модуля. Это помогает перестроить интерфейс в зависимости от прав текущего пользователя. Однако полностью доверять значениям этих переменных не стоит, необходима дополнительная проверка на стороне контроллера.