-
Notifications
You must be signed in to change notification settings - Fork 0
Acl
Bashka edited this page Apr 19, 2017
·
5 revisions
Плагин организует разграничение доступа с использованием контрольных листов вида:
[ 'role' => [ 'resource' => ['operation', ...], ... ], ... ]
где role - это роль пользователя; resource - это целевой ресурс; operation - это допустимая операция над этим ресуром.
- allowed - контрольный лист, применяемый к данной странице для разграничения доступа. В качестве role используется значение
$_SESSION['role']
или"guest
, если сессия не запущена. В качестве resource используется текущий URL. В качестве operation используется метод запроса. Знак"*"
может использоваться в качестве resource и operation для указания всех возможных значений - forbidder - функция, вызываемая при нарушении контрольного листа
Пример использования:
// Файл config.php return [ 'acl' => [ 'allowed' => [ // Гостям разрешен доступ к форме входа и главной странице 'guest' => [ 'login' => ['GET', 'POST'], 'index' => ['GET'], ], // Пользователям разрешен доступ к форуму 'guest' => [ 'login' => ['GET', 'POST'], 'logout' => ['POST'], 'index' => ['GET'], 'forum' => ['GET'], 'forum/insert.php' => ['POST'], ], // Администрации разрешен доступ везде 'admin' => '*', ], ], ];
acl_build(array $allowed) : Closure
Фабрика, генерирующая ограничитель на основании контрольного листа, переданного в первом параметре.
Пример использования:
$acl = acl_build([ 'user' => [ 'index' => '*', ... ] ]); if(!$acl('user', $_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD'])){ header('Location: /', 403); }
acl_control(array $allowed, [$role], [$resource], [$operation]) : bool
Делегатор, формирующий ограничитель и выполняющий проверку доступа с его помощью. Именно эта функция используется плагином для контроля доступа к страницам с использованием конфигураций.
Не получается разобраться? Спросите в чате!
- Быстрый старт
- Плагины