Определение прав пользователей
Определение прав пользователей
Права пользователя назначаются в интерфейсе управления пользователями. Пользователь принадлежит группе, для которой выставлены детализированные права на управление данными модулями, чаще всего модуль ассоциируется с объектом ORM.
На данный момент платформа поддерживает следующую детализацию прав:
- чтение;
- редактирование (создание /обновление);
- удаление;
- публикация (для объектов с версионным контролем).
Стандартные контроллеры административной части имеют несколько методов идентификации прав:
- _checkCanEdit();
- _checkCanDelete();
- _checkCanPublish() (для Ccrud_Vc).
Проверка прав на чтение для поступающих запросов осуществляется автоматически в Backend_Controller. Подробное описание представлено в разделах документации:
- Backend_Controller (Контроллер админ. панели)
- Backend_Controller_Crud_VC (Базовый контроллер админ. панели, версионный контроль)
При вызове эти методы проверяют наличие прав текущего пользователя (авторизованный пользователь, который отправил запрос) на определенное действие.
Если пользователю присвоена группа, которой запрещено редактирование, то вызов метода внутри контроллера
$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).
Переменные содержат булевоое значение - наличие прав текущего пользователя на операции с объектом модуля. Это помогает перестроить интерфейс в зависимости от прав текущего пользователя. Однако полностью доверять значениям этих переменных не стоит, необходима дополнительная проверка на стороне контроллера.