Skip to content

jeyroik/extas-access

Repository files navigation

tests codecov.io Latest Stable Version Total Downloads Dependents

Описание

Пакет для управления правами доступа.

Пакет реализует модель "всё, что не разрешено, запрещено".

Установка

composer require jeyroik/extas-access:4.*

Использование

Установка доступа для вашего пакета

Если ваш пакет (приложение) предусматривает какой-либо предустановленный доступ, то его установку можно организовать следующим образом:

  • Добавить доступ в extas-совместимую конфигурацию
{
  "access": [
    {"object": "jeyroik", "section": "api", "subject": "app", "operation": "delete"}
  ]
}
  • Запустить установку сущностей /vendor/bin/extas i

Создание доступа

use \extas\interfaces\access\IAccess;
use \extas\components\access\Access;
use \extas\components\access\AccessService;

$access = new \extas\components\access\Access([
    IAccess::FIELD__OBJECT => 'player.name',
    IAccess::FIELD__SECTION => 'api',
    IAccess::FIELD__SUBJECT => 'player',
    IAccess::FIELD__OPERATION => 'create'
]);

$accessService = new AccessService();

if (!$accessService->isGranted($access)) {
    $accessService->grant($access);
}

Проверка доступа

Мало чем отличается от создания.

use \extas\interfaces\access\IAccess;
use \extas\components\access\Access;
use \extas\components\access\AccessService;

$access = new \extas\components\access\Access([
    IAccess::FIELD__OBJECT => 'player.name',
    IAccess::FIELD__SECTION => 'api',
    IAccess::FIELD__SUBJECT => 'player',
    IAccess::FIELD__OPERATION => 'create'
]);

$accessService = new AccessService();

if ($accessService->isGranted($access)) {
    echo 'Access granted';
}