Checker - модуль проверок
Для проверок в системе создан специальный чекер, расположенный в ядре /src/Checker/Checker.php
Существует встроенная проверка актуальности сессии.
Также вы можете создавать собственные проверки.
Проверка актуальности сессии
В месте вашего кода (обычно это в начале запуска контроллера) разместить следующий код:
$checker_checks = [
'auth' => '',
];
$checker_result = $this->dic['checker']->run($checker_checks);
if (is_array($checker_result) && count($checker_result) == 0) {
// Проверка успешно пройдена
// $this->response->setData($result);
} else {
// При проверке возникли ошибки, вернём их
$this->response->setData($checker_result);
}
$this->response->send();
Также есть возможность напрямую проверить актуальность сессии:
use Lemurro\Api\Core\Session;
$result_session_check = (new Session())->check($this->dic['session_id']);
if (isset($result_session_check['errors'])) {
// Сессия устарела
$this->response->setData($checker_result);
} else {
// Проверка успешно пройдена
// $this->response->setData($result);
}
$this->response->send();
Проверка на роль "Администратор"
Чтобы проверить пользователя только на роль "Администратор" передайте такой массив проверок:
$checker_checks = [
'role' => [],
];
Проверка ролей
В месте вашего кода (обычно это в начале запуска контроллера) разместить следующий код:
$checker_checks = [
'auth' => '',
'role' => [
'page' => 'example',
'access' => 'create-update',
],
];
$checker_result = $this->dic['checker']->run($checker_checks);
if (is_array($checker_result) && count($checker_result) == 0) {
// Проверка успешно пройдена
// $this->response->setData($result);
} else {
// При проверке возникли ошибки, вернём их
$this->response->setData($checker_result);
}
$this->response->send();
Данная проверка посмотрит может ли данный пользователь добавлять и изменять записи create-update
в разделе example
В самом начале проверяется роль администратора, если пользователь администратор, тогда сразу возвращается ответ об успешной проверке
Если нужно просто проверить только на роль администратора, просто загляните в $this->dic['user']['admin']
хранит в себе boolean
значение
Используем права на элементах страницы
Любой элемент на странице можно скрыть по умолчанию и показать в зависимости от прав доступа
Для этого укажите у элемента обязательные 2 класса
d-none js-role
Если не указывать больше никаких классов, тогда этот элемент будет виден только пользователям с правами Администратор
Далее укажите один или более классов собранных по шаблону
js-role__PAGE--ACCESS
где:
- PAGE - код страницы
- ACCESS - право доступа
Например:
js-role__example--read
Покажет этот элемент если у пользователя есть право доступа read
для раздела example