Класс Phalcon\Acl\Adapter\Memory

расширяет абстрактный класс Phalcon\Acl\Adapter

Реализует Phalcon\Events\EventsAwareInterface, Phalcon\Acl\AdapterInterface

Source on GitHub

Управление списками ACL в памяти

<?php

$acl = new \Phalcon\Acl\Adapter\Memory();

$acl->setDefaultAction(
    \Phalcon\Acl::DENY
);

// Регистрация ролей
$roles = [
    "users"  => new \Phalcon\Acl\Role("Users"),
    "guests" => new \Phalcon\Acl\Role("Guests"),
];
foreach ($roles as $role) {
    $acl->addRole($role);
}

// Ресурсы частной зоны
$privateResources = [
    "companies" => ["index", "search", "new", "edit", "save", "create", "delete"],
    "products"  => ["index", "search", "new", "edit", "save", "create", "delete"],
    "invoices"  => ["index", "profile"],
];

foreach ($privateResources as $resourceName => $actions) {
    $acl->addResource(
        new \Phalcon\Acl\Resource($resourceName),
        $actions
    );
}

// Ресурсы общественных зон
$publicResources = [
    "index"   => ["index"],
    "about"   => ["index"],
    "session" => ["index", "register", "start", "end"],
    "contact" => ["index", "send"],
];

foreach ($publicResources as $resourceName => $actions) {
    $acl->addResource(
        new \Phalcon\Acl\Resource($resourceName),
        $actions
    );
}

// Предоставление доступа к общим зонам как пользователям, так и гостям
foreach ($roles as $role){
    foreach ($publicResources as $resource => $actions) {
        $acl->allow($role->getName(), $resource, "*");
    }
}

// Предоставление доступа к частной области пользователям роли
foreach ($privateResources as $resource => $actions) {
    foreach ($actions as $action) {
        $acl->allow("Users", $resource, $action);
    }
}

Methods

public __construct ()

Phalcon\Acl\Adapter\Memory конструктор

public addRole (RoleInterface | string $role, [array | string $accessInherits])

Добавляет роль в список ACL. Второй параметр позволяет наследовать данные доступа из другого существующеq роли. Пример :

<?php

$acl->addRole(
    new Phalcon\Acl\Role("administrator"),
    "consultant"
);

$acl->addRole("administrator", "consultant");

 

public addInherit (mixed $roleName, mixed $roleToInherit)

Наследование роли от другой существующей роли

public isRole (mixed $roleName)

Проверить существует ли роль в списке ролей

public isResource (mixed $resourceName)

Проверить, существует ли ресурс в списке ресурсов

public addResource (Phalcon\Acl\Resource | string $resourceValue, array | string $accessList)

Добавление ресурса в список имена доступа ACL может быть конкретное действие, например поиск, обновление, удаление и т. д. или их список. Пример :

<?php

// Добавление ресурса в список, разрешающего доступ к действию
$acl->addResource(
    new Phalcon\Acl\Resource("customers"),
    "search"
);

$acl->addResource("customers", "search");

// Add a resource  with an access list
$acl->addResource(
    new Phalcon\Acl\Resource("customers"),
    [
        "create",
        "search",
    ]
);

$acl->addResource(
    "customers",
    [
        "create",
        "search",
    ]
);

public addResourceAccess (mixed $resourceName, array | string $accessList)

Добавляет доступ к ресурсам

public dropResourceAccess (mixed $resourceName, array | string $accessList)

Удаляет доступ из ресурса

protected _allowOrDeny (mixed $roleName, mixed $resourceName, mixed $access, mixed $action, [mixed $func])

Проверяет, имеет ли роль доступ к ресурсу

public allow (mixed $roleName, mixed $resourceName, mixed $access, [mixed $func])

Разрешить доступ к роли на ресурсе можно использовать подстановочный знак"*". Пример:

<?php

//Разрешить доступ гостям для поиска клиентов
$acl->allow("guests", "customers", "search");

//Разрешить доступ к гостям для поиска или создания на клиентов
$acl->allow("guests", "customers", ["search", "create"]);

//Разрешить доступ к любой роли для просмотра продуктов
$acl->allow("*", "products", "browse");

//Разрешить доступ к любой роли для просмотра на любом ресурсе
$acl->allow("*", "*", "browse");

public deny (mixed $roleName, mixed $resourceName, mixed $access, [mixed $func])

Запретить доступ к роли на ресурсе можно использовать подстановочный знак"*". Пример:

<?php

//Запретить доступ гостей к поиску клиентов
$acl->deny("guests", "customers", "search");

//Запрет доступа к гостям для поиска или создания клиентов
$acl->deny("guests", "customers", ["search", "create"]);

//Запретить доступ к любой роли для просмотра продуктов
$acl->deny("*", "products", "browse");

//Запретить доступ к любой роли для просмотра на любом ресурсе
$acl->deny("*", "*", "browse");

public isAllowed (RoleInterface | RoleAware | string $roleName, ResourceInterface | ResourceAware | string $resourceName, mixed $access, [array $parameters])

Проверить, разрешен ли роли доступ к действию из ресурса. Пример:

<?php

//Имеет ли andres доступ к ресурсу клиентов для создания?
$acl->isAllowed("andres", "Products", "create");

//Есть ли у гостей доступ к какому-либо ресурсу для редактирования?
$acl->isAllowed("guests", "*", "edit");

public setNoArgumentsDefaultAction (mixed $defaultAccess)

Устанавливает уровень доступа по умолчанию (Phalcon\Acl::ALLOW или Phalcon\Acl::DENY) для аргументов, не предоставленных в действии isAllowed, если существует func для accessKey

public getNoArgumentsDefaultAction ()

Возвращает уровень доступа ACL по умолчанию для аргументов, не предоставленных в действии isAllowed, если существует func для accessKey

public getRoles ()

Возвращает массив с каждой ролью, зарегистрированной в списке

public getResources ()

Возвращает массив с каждым ресурсом, зарегистрированным в списке

public getActiveRole () наследуется от Phalcon\Acl\Adapter

Роль, которую проверяет список, разрешен ли доступ к определенному ресурсу

public getActiveResource () наследуется от Phalcon\Acl\Adapter

Ресурс, который проверяет, может ли какая-либо роль получить к нему доступ

public getActiveAccess () наследуется от Phalcon\Acl\Adapter

Активный доступ, проверяет список, может ли какая-либо роль получить к нему доступ

public setEventsManager (Phalcon\Events\ManagerInterface $eventsManager) наследуется от Phalcon\Acl\Adapter

Задает диспетчер событий

public getEventsManager () наследуется от Phalcon\Acl\Adapter

Возвращает внутренний менеджер событий

public setDefaultAction (mixed $defaultAccess) наследуется от Phalcon\Acl\Adapter

Устанавливает уровень доступа по умолчанию (Phalcon\Acl::ALLOW или Phalcon\Acl::DENY)

public getDefaultAction () наследуется от Phalcon\Acl\Adapter

Возвращает уровень доступа ACL по умолчанию