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