Skip to content

Phalcon Acl

Updated View as Markdown

Acl\Adapter\AbstractAdapter

AbstractSource on GitHub

Adapter for Phalcon\Acl adapters

Uses Phalcon\Acl\Enum · Phalcon\Events\AbstractEventsAware · Phalcon\Events\EventsAwareInterface

Method Summary

Properties

protectedint$accessGranted = Enum::DENYAccess Granted
protectedstring|null$activeAccess = nullActive access which the list is checking if some role can access it
protectedstring|null$activeComponent = nullComponent which the list is checking if some role can access it
protectedstring|null$activeRole = nullRole which the list is checking if it's allowed to certain component/access
protectedint$defaultAccess = Enum::DENYDefault access

Methods

Public · 5

getActiveAccess()

public function getActiveAccess(): string|null;

Active access which the list is checking if some role can access it

getActiveComponent()

public function getActiveComponent(): string|null;

Component which the list is checking if some role can access it

getActiveRole()

public function getActiveRole(): string|null;

Role which the list is checking if it’s allowed to certain component/access

getDefaultAction()

public function getDefaultAction(): int;

Returns the default ACL access level

setDefaultAction()

public function setDefaultAction( int $defaultAccess ): void;

Sets the default access level (Phalcon\Acl\Enum::ALLOW or Phalcon\Acl\Enum::DENY)

Acl\Adapter\AdapterInterface

InterfaceSource on GitHub

Interface for Phalcon\Acl adapters

  • Phalcon\Acl\Adapter\AdapterInterface

Uses Phalcon\Acl\ComponentInterface · Phalcon\Acl\RoleInterface

Method Summary

publicbooladdComponent(mixed$componentValue,mixed$accessList)Adds a component to the ACL listpublicbooladdComponentAccess(string$componentName,mixed$accessList)Adds access to componentspublicbooladdInherit(string$roleName,mixed$roleToInherits)Do a role inherit from another existing rolepublicbooladdRole(mixed$role,mixed$accessInherits = null)Adds a role to the ACL list. Second parameter lets to inherit access datapublicvoidallow(string$roleName,string$componentName,mixed$access,mixed$func = null)Allow access to a role on a componentpublicvoiddeny(string$roleName,string$componentName,mixed$access,mixed$func = null)Deny access to a role on a componentpublicvoiddropComponentAccess(string$componentName,mixed$accessList)Removes access from a componentpublicnull|stringgetActiveAccess()Returns the access which the list is checking if some role can access itpublicnull|stringgetActiveComponent()Returns the component which the list is checking if some role can accesspublicnull|stringgetActiveRole()Returns the role which the list is checking if it's allowed to certainpublicComponentInterface[]getComponents()Return an array with every component registered in the listpublicintgetDefaultAction()Returns the default ACL access levelpublicarraygetInheritedRoles( string$roleName = "" )Returns the inherited roles for a passed role name. If no role namepublicintgetNoArgumentsDefaultAction()Returns the default ACL access level for no arguments provided inpublicRoleInterface[]getRoles()Return an array with every role registered in the listpublicboolisAllowed(mixed$roleName,mixed$componentName,string$access,array$parameters = null)Check whether a role is allowed to access an action from a componentpublicboolisComponent( string$componentName )Check whether component exist in the components listpublicboolisRole( string$roleName )Check whether role exist in the roles listpublicvoidsetDefaultAction( int$defaultAccess )Sets the default access level (Phalcon\Acl\Enum::ALLOW or Phalcon\Acl\Enum::DENY)publicvoidsetNoArgumentsDefaultAction( int$defaultAccess )Sets the default access level (Phalcon\Acl\Enum::ALLOW or Phalcon\Acl\Enum::DENY)

Methods

Public · 20

addComponent()

public function addComponent(
    mixed $componentValue,
    mixed $accessList
): bool;

Adds a component to the ACL list

Access names can be a particular action, by example search, update, delete, etc. or a list of them

addComponentAccess()

public function addComponentAccess(
    string $componentName,
    mixed $accessList
): bool;

Adds access to components

addInherit()

public function addInherit(
    string $roleName,
    mixed $roleToInherits
): bool;

Do a role inherit from another existing role

addRole()

public function addRole(
    mixed $role,
    mixed $accessInherits = null
): bool;

Adds a role to the ACL list. Second parameter lets to inherit access data from other existing role

allow()

public function allow(
    string $roleName,
    string $componentName,
    mixed $access,
    mixed $func = null
): void;

Allow access to a role on a component

deny()

public function deny(
    string $roleName,
    string $componentName,
    mixed $access,
    mixed $func = null
): void;

Deny access to a role on a component

dropComponentAccess()

public function dropComponentAccess(
    string $componentName,
    mixed $accessList
): void;

Removes access from a component

getActiveAccess()

public function getActiveAccess(): null|string;

Returns the access which the list is checking if some role can access it

getActiveComponent()

public function getActiveComponent(): null|string;

Returns the component which the list is checking if some role can access it

getActiveRole()

public function getActiveRole(): null|string;

Returns the role which the list is checking if it’s allowed to certain component/access

getComponents()

public function getComponents(): ComponentInterface[];

Return an array with every component registered in the list

getDefaultAction()

public function getDefaultAction(): int;

Returns the default ACL access level

getInheritedRoles()

public function getInheritedRoles( string $roleName = "" ): array;

Returns the inherited roles for a passed role name. If no role name has been specified it will return the whole array. If the role has not been found it returns an empty array

getNoArgumentsDefaultAction()

public function getNoArgumentsDefaultAction(): int;

Returns the default ACL access level for no arguments provided in isAllowed action if there exists func for accessKey

getRoles()

public function getRoles(): RoleInterface[];

Return an array with every role registered in the list

isAllowed()

public function isAllowed(
    mixed $roleName,
    mixed $componentName,
    string $access,
    array $parameters = null
): bool;

Check whether a role is allowed to access an action from a component

isComponent()

public function isComponent( string $componentName ): bool;

Check whether component exist in the components list

isRole()

public function isRole( string $roleName ): bool;

Check whether role exist in the roles list

setDefaultAction()

public function setDefaultAction( int $defaultAccess ): void;

Sets the default access level (Phalcon\Acl\Enum::ALLOW or Phalcon\Acl\Enum::DENY)

setNoArgumentsDefaultAction()

public function setNoArgumentsDefaultAction( int $defaultAccess ): void;

Sets the default access level (Phalcon\Acl\Enum::ALLOW or Phalcon\Acl\Enum::DENY) for no arguments provided in isAllowed action if there exists func for accessKey

Acl\Adapter\Memory

ClassSource on GitHub

Manages ACL lists in memory

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

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

// Register roles
$roles = [
    "users"  => new \Phalcon\Acl\Role("Users"),
    "guests" => new \Phalcon\Acl\Role("Guests"),
];
foreach ($roles as $role) {
    $acl->addRole($role);
}

// Private area components
$privateComponents = [
    "companies" => ["index", "search", "new", "edit", "save", "create", "delete"],
    "products"  => ["index", "search", "new", "edit", "save", "create", "delete"],
    "invoices"  => ["index", "profile"],
];

foreach ($privateComponents as $componentName => $actions) {
    $acl->addComponent(
        new \Phalcon\Acl\Component($componentName),
        $actions
    );
}

// Public area components
$publicComponents = [
    "index"   => ["index"],
    "about"   => ["index"],
    "session" => ["index", "register", "start", "end"],
    "contact" => ["index", "send"],
];

foreach ($publicComponents as $componentName => $actions) {
    $acl->addComponent(
        new \Phalcon\Acl\Component($componentName),
        $actions
    );
}

// Grant access to public areas to both users and guests
foreach ($roles as $role) {
    foreach ($publicComponents as $component => $actions) {
        $acl->allow($role->getName(), $component, "*");
    }
}

// Grant access to private area to role Users
foreach ($privateComponents as $component => $actions) {
    foreach ($actions as $action) {
        $acl->allow("Users", $component, $action);
    }
}

Uses Phalcon\Acl\Component · Phalcon\Acl\ComponentAwareInterface · Phalcon\Acl\ComponentInterface · Phalcon\Acl\Enum · Phalcon\Acl\Exceptions\AccessRuleNotFound · Phalcon\Acl\Exceptions\CircularInheritanceError · Phalcon\Acl\Exceptions\ElementNotFound · Phalcon\Acl\Exceptions\InvalidAccessList · Phalcon\Acl\Exceptions\InvalidComponentImplementation · Phalcon\Acl\Exceptions\InvalidRoleImplementation · Phalcon\Acl\Exceptions\InvalidRoleType · Phalcon\Acl\Exceptions\MissingFunctionParameters · Phalcon\Acl\Exceptions\ParameterTypeMismatch · Phalcon\Acl\Exceptions\RoleNotFoundException · Phalcon\Acl\Role · Phalcon\Acl\RoleAwareInterface · Phalcon\Acl\RoleInterface · ReflectionClass · ReflectionFunction · ReflectionNamedType

Method Summary

public__construct()Phalcon\Acl\Adapter\Memory constructorpublicbooladdComponent(mixed$componentValue,mixed$accessList)Adds a component to the ACL listpublicbooladdComponentAccess(string$componentName,mixed$accessList)Adds access to componentspublicbooladdInherit(string$roleName,mixed$roleToInherits)Do a role inherit from another existing rolepublicbooladdRole(mixed$role,mixed$accessInherits = null)Adds a role to the ACL list. Second parameter allows inheriting access data from other existing rolepublicvoidallow(string$roleName,string$componentName,mixed$access,mixed$func = null)Allow access to a role on a component. You can use * as wildcardpublicvoiddeny(string$roleName,string$componentName,mixed$access,mixed$func = null)Deny access to a role on a component. You can use * as wildcardpublicvoiddropComponentAccess(string$componentName,mixed$accessList)Removes access from a componentpublicmixedgetActiveFunction()Returns the latest function used to acquire accesspublicintgetActiveFunctionCustomArgumentsCount()Returns number of additional arguments(excluding role and resource) for active functionpublicstring|nullgetActiveKey()Returns the latest key used to acquire accesspublicComponentInterface[]getComponents()Return an array with every component registered in the listpublicarraygetInheritedRoles( string$roleName = "" )Returns the inherited roles for a passed role name. If no role namepublicintgetNoArgumentsDefaultAction()Returns the default ACL access level for no arguments provided inpublicRoleInterface[]getRoles()Return an array with every role registered in the listpublicboolisAllowed(mixed$roleName,mixed$componentName,string$access,array$parameters = null)Check whether a role is allowed to access an action from a componentpublicboolisComponent( string$componentName )Check whether component exist in the components listpublicboolisRole( string$roleName )Check whether role exist in the roles listpublicvoidsetNoArgumentsDefaultAction( int$defaultAccess )Sets the default access level (Phalcon\Enum::ALLOW or Phalcon\Enum::DENY)

Properties

protectedarray$accessAccess
protectedarray$accessListAccess List
protectedmixed$activeFunctionReturns the latest function used to acquire access
protectedint$activeFunctionCustomArgumentsCount = 0Returns number of additional arguments(excluding role and resource) for active function
protectedstring|null$activeKey = nullReturns the latest key used to acquire access
protectedarray$componentsComponents
protectedarray$componentsNamesComponent Names
protectedarray$functionsFunction List
protectedint$noArgumentsDefaultAction = Enum::DENYDefault action for no arguments is allow
protectedarray$roleInheritsRole Inherits
protectedarray$rolesRoles

Methods

Public · 19

__construct()

public function __construct();

Phalcon\Acl\Adapter\Memory constructor

addComponent()

public function addComponent(
    mixed $componentValue,
    mixed $accessList
): bool;

Adds a component to the ACL list

Access names can be a particular action, by example search, update, delete, etc. or a list of them

Example:

// Add a component to the list allowing access to an action
$acl->addComponent(
    new Phalcon\Acl\Component("customers"),
    "search"
);

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

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

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

addComponentAccess()

public function addComponentAccess(
    string $componentName,
    mixed $accessList
): bool;

Adds access to components

addInherit()

public function addInherit(
    string $roleName,
    mixed $roleToInherits
): bool;

Do a role inherit from another existing role

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

addRole()

public function addRole(
    mixed $role,
    mixed $accessInherits = null
): bool;

Adds a role to the ACL list. Second parameter allows inheriting access data from other existing role

If the role already exists this method returns false and the accessInherits argument is ignored; the existing role is left unchanged.

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

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

allow()

public function allow(
    string $roleName,
    string $componentName,
    mixed $access,
    mixed $func = null
): void;

Allow access to a role on a component. You can use * as wildcard

A * role is an eager snapshot: it expands to the roles that exist when allow() is called, so roles added afterwards do not inherit the grant.

// Allow access to guests to search on customers
$acl->allow("guests", "customers", "search");

// Allow access to guests to search or create on customers
$acl->allow("guests", "customers", ["search", "create"]);

// Allow access to any role to browse on products
$acl->allow("*", "products", "browse");

// Allow access to any role to perform any action on any component
$acl->allow("*", "*", "*");

deny()

public function deny(
    string $roleName,
    string $componentName,
    mixed $access,
    mixed $func = null
): void;

Deny access to a role on a component. You can use * as wildcard

A * role is an eager snapshot: it expands to the roles that exist when deny() is called, so roles added afterwards do not inherit the rule.

// Deny access to guests to search on customers
$acl->deny("guests", "customers", "search");

// Deny access to guests to search or create on customers
$acl->deny("guests", "customers", ["search", "create"]);

// Deny access to any role to browse on products
$acl->deny("*", "products", "browse");

// Deny access to any role to perform any action on any component
$acl->deny("*", "*", "*");

dropComponentAccess()

public function dropComponentAccess(
    string $componentName,
    mixed $accessList
): void;

Removes access from a component

getActiveFunction()

public function getActiveFunction(): mixed;

Returns the latest function used to acquire access

getActiveFunctionCustomArgumentsCount()

public function getActiveFunctionCustomArgumentsCount(): int;

Returns number of additional arguments(excluding role and resource) for active function

getActiveKey()

public function getActiveKey(): string|null;

Returns the latest key used to acquire access

getComponents()

public function getComponents(): ComponentInterface[];

Return an array with every component registered in the list

getInheritedRoles()

public function getInheritedRoles( string $roleName = "" ): array;

Returns the inherited roles for a passed role name. If no role name has been specified it will return the whole array. If the role has not been found it returns an empty array

getNoArgumentsDefaultAction()

public function getNoArgumentsDefaultAction(): int;

Returns the default ACL access level for no arguments provided in isAllowed action if a func (callable) exists for accessKey

getRoles()

public function getRoles(): RoleInterface[];

Return an array with every role registered in the list

isAllowed()

public function isAllowed(
    mixed $roleName,
    mixed $componentName,
    string $access,
    array $parameters = null
): bool;

Check whether a role is allowed to access an action from a component

// Does andres have access to the customers component to create?
$acl->isAllowed("andres", "Products", "create");

// Do guests have access to any component to edit?
$acl->isAllowed("guests", "*", "edit");

isComponent()

public function isComponent( string $componentName ): bool;

Check whether component exist in the components list

isRole()

public function isRole( string $roleName ): bool;

Check whether role exist in the roles list

setNoArgumentsDefaultAction()

public function setNoArgumentsDefaultAction( int $defaultAccess ): void;

Sets the default access level (Phalcon\Enum::ALLOW or Phalcon\Enum::DENY) for no arguments provided in isAllowed action if there exists func for accessKey

Acl\Component

ClassSource on GitHub

This class defines component entity and its description

Uses Phalcon\Acl\Exceptions\ForbiddenWildcard

Method Summary

Methods

Public · 4

__construct()

public function __construct(
    string $name,
    string $description = null
);

Phalcon\Acl\Component constructor

__toString()

public function __toString(): string;

getDescription()

public function getDescription(): string|null;

getName()

public function getName(): string;

Acl\ComponentAwareInterface

InterfaceSource on GitHub

Interface for classes which could be used in allow method as RESOURCE

  • Phalcon\Acl\ComponentAwareInterface

Method Summary

Methods

Public · 1

getComponentName()

public function getComponentName(): string;

Returns component name

Acl\ComponentInterface

InterfaceSource on GitHub

Interface for Phalcon\Acl\Component

  • Phalcon\Acl\ComponentInterface

Method Summary

Methods

Public · 3

__toString()

public function __toString(): string;

Magic method __toString

getDescription()

public function getDescription(): string|null;

Returns component description

getName()

public function getName(): string;

Returns the component name

Acl\Enum

ClassSource on GitHub

Constants for Phalcon\Acl\Adapter adapters

  • Phalcon\Acl\Enum

Constants

intALLOW = 1
intDENY = 0

Acl\Exception

ClassSource on GitHub

Class for exceptions thrown by Phalcon\Acl

Acl\Exceptions\AccessRuleNotFound

ClassSource on GitHub

Uses Phalcon\Acl\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct(
    string $accessName,
    string $componentName
);

Acl\Exceptions\CircularInheritanceError

ClassSource on GitHub

Uses Phalcon\Acl\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $roleName );

Acl\Exceptions\ElementNotFound

ClassSource on GitHub

Uses Phalcon\Acl\Exception

Acl\Exceptions\ForbiddenWildcard

ClassSource on GitHub

Uses Phalcon\Acl\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $elementType );

Acl\Exceptions\InvalidAccessList

ClassSource on GitHub

Uses Phalcon\Acl\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Acl\Exceptions\InvalidComponentImplementation

ClassSource on GitHub

Uses Phalcon\Acl\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Acl\Exceptions\InvalidRoleImplementation

ClassSource on GitHub

Uses Phalcon\Acl\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Acl\Exceptions\InvalidRoleType

ClassSource on GitHub

Uses Phalcon\Acl\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Acl\Exceptions\MissingFunctionParameters

ClassSource on GitHub

Uses Phalcon\Acl\Exception

Acl\Exceptions\ParameterTypeMismatch

ClassSource on GitHub

Uses Phalcon\Acl\Exception

Acl\Exceptions\RoleNotFoundException

ClassSource on GitHub

Uses Phalcon\Acl\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct( string $roleName );

Acl\Role

ClassSource on GitHub

This class defines role entity and its description

Uses Phalcon\Acl\Exceptions\ForbiddenWildcard

Method Summary

Methods

Public · 4

__construct()

public function __construct(
    string $name,
    string $description = null
);

Phalcon\Acl\Role constructor

__toString()

public function __toString(): string;

getDescription()

public function getDescription(): string|null;

getName()

public function getName(): string;

Acl\RoleAwareInterface

InterfaceSource on GitHub

Interface for classes which could be used in allow method as ROLE

  • Phalcon\Acl\RoleAwareInterface

Method Summary

Methods

Public · 1

getRoleName()

public function getRoleName(): string;

Returns role name

Acl\RoleInterface

InterfaceSource on GitHub

Interface for Phalcon\Acl\Role

  • Phalcon\Acl\RoleInterface

Method Summary

Methods

Public · 3

__toString()

public function __toString(): string;

Magic method __toString

getDescription()

public function getDescription(): string|null;

Returns role description

getName()

public function getName(): string;

Returns the role name

Type to search…

↑↓ navigate↵ selectEsc close