-
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
Делегатор, формирующий ограничитель и выполняющий проверку доступа с его помощью. Именно эта функция используется плагином для контроля доступа к страницам с использованием конфигураций.
Не получается разобраться? Спросите в чате!
- Быстрый старт
- Плагины