Skip to content
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

Делегатор, формирующий ограничитель и выполняющий проверку доступа с его помощью. Именно эта функция используется плагином для контроля доступа к страницам с использованием конфигураций.

Clone this wiki locally