Простое право доступа
На основе конфига
Фронтенд
Роли настраиваются в файле /src/js/0-app/100-config.js
в части client-metronic
в блоке userRoles
Список доступных констант
- list - Список ролей с правами доступа
- guideAccess - Справочник названий прав доступа
Добавим новую роль example
, с уникальным правом доступа my-access
// Список ролей с правами доступа
list: [
{
name : 'example',
title : 'Example',
access: [
'read',
'create-update',
'delete',
'my-access'
]
}
],
// Справочник названий прав доступа
guideAccess: {
'read' : 'Просмотр',
'create-update': 'Добавление и изменение',
'delete' : 'Удаление',
'my-access' : 'Уникальный доступ'
}
Бэкенд
Теперь мы можем использовать проверку на наше право доступа
$this->checker->run([
'auth' => '',
'role' => [
'page' => 'example',
'access' => 'my-access',
],
]);
// Проверка успешно пройдена
Или мы можем сами отловить исключение
try {
$this->checker->run([
'role' => [
'page' => 'example',
'access' => 'my-access',
],
]);
// Проверка успешно пройдена
} catch (ResponseException $e) {
LogException::write($this->log, $e);
// Проверка провалилась
}
Своя уникальная проверка
Для создания собственной проверки необходимо создать класс в каталоге серверной части /app/Checker
<?php
/**
* Проверяем что это определенный пользователь
*
* @author Дмитрий Щербаков <atomcms@ya.ru>
*
* @version 13.04.2018
*/
namespace Lemurro\Api\App\Checker;
use Lemurro\Api\Core\Abstracts\Action;
use Lemurro\Api\Core\Helpers\Response;
/**
* @package Lemurro\Api\App\Checker
*/
class Simple extends Action
{
/**
* @author Дмитрий Щербаков <atomcms@ya.ru>
*
* @version 13.04.2018
*/
public function run(array $data): array
{
if ($this->dic['user']['auth_id'] == $data['auth_id']) {
return [];
} else {
return Response::error403('Доступ ограничен', true);
}
}
}
Для использования класса доработаем список правил:
$this->checker->run([
'auth' => '',
'simple' => [
'class' => 'Simple',
'auth_id' => 'atomcms@ya.ru',
],
]);
// Проверка успешно пройдена
$this->response->setData($result);
return $this->response;
-
simple
- Имя вашей проверки может быть любым, оно не используется и носит справочный характер. -
class
- Обязательное поле, указывает название вашего класса в каталоге серверной части/app/Checker
-
auth_id
- Также могут быть любые необязательные поля, которые будут переданы в ваш класс. В данном примере мы передаемauth_id
одного из пользователей, чтобы удостовериться что мы находимся под нужным на пользователем.