*
* $acl = new Phalcon\Acl\Adapter\Memory();
*
* $acl->setDefaultAction(Phalcon\Acl::DENY);
*
* //Register roles
* $roles = array(
* 'users' => new Phalcon\Acl\Role('Users'),
* 'guests' => new Phalcon\Acl\Role('Guests')
* );
* foreach ($roles as $role) {
* $acl->addRole($role);
* }
*
* //Private area resources
* $privateResources = array(
* 'companies' => array('index', 'search', 'new', 'edit', 'save', 'create', 'delete'),
* 'products' => array('index', 'search', 'new', 'edit', 'save', 'create', 'delete'),
* 'invoices' => array('index', 'profile')
* );
* foreach ($privateResources as $resource => $actions) {
* $acl->addResource(new Phalcon\Acl\Resource($resource), $actions);
* }
*
* //Public area resources
* $publicResources = array(
* 'index' => array('index'),
* 'about' => array('index'),
* 'session' => array('index', 'register', 'start', 'end'),
* 'contact' => array('index', 'send')
* );
* foreach ($publicResources as $resource => $actions) {
* $acl->addResource(new Phalcon\Acl\Resource($resource), $actions);
* }
*
* //Grant access to public areas to both users and guests
* foreach ($roles as $role){
* foreach ($publicResources as $resource => $actions) {
* $acl->allow($role->getName(), $resource, '*');
* }
* }
*
* //Grant access to private area to role Users
* foreach ($privateResources as $resource => $actions) {
* foreach ($actions as $action) {
* $acl->allow('Users', $resource, $action);
* }
* }
*
*
*/
class Memory extends \Phalcon\Acl\Adapter implements \Phalcon\Events\EventsAwareInterface, \Phalcon\Acl\AdapterInterface {
protected $_rolesNames;
protected $_roles;
protected $_resourcesNames;
protected $_resources;
protected $_access;
protected $_roleInherits;
protected $_accessList;
/**
* \Phalcon\Acl\Adapter\Memory constructor
*
*/
public function __construct(){ }
/**
* Adds a role to the ACL list. Second parameter allows inheriting access data from other existing role
*
* Example:
*
* $acl->addRole(new \Phalcon\Acl\Role('administrator'), 'consultant');
* $acl->addRole('administrator', 'consultant');
*
*
* @param \Phalcon\Acl\RoleInterface $role
* @param array|string $accessInherits
* @return boolean
*/
public function addRole($role, $accessInherits=null){ }
/**
* Do a role inherit from another existing role
*
* @param string $roleName
* @param string $roleToInherit
*/
public function addInherit($roleName, $roleToInherit){ }
/**
* Check whether role exist in the roles list
*
* @param string $roleName
* @return boolean
*/
public function isRole($roleName){ }
/**
* Check whether resource exist in the resources list
*
* @param string $resourceName
* @return boolean
*/
public function isResource($resourceName){ }
/**
* Adds a resource 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 resource to the the list allowing access to an action
* $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'), array('create', 'search'));
* $acl->addResource('customers', array('create', 'search'));
*
*
* @param \Phalcon\Acl\Resource $resource
* @param array $accessList
* @return boolean
*/
public function addResource($resource, $accessList=null){ }
/**
* Adds access to resources
*
* @param string $resourceName
* @param mixed $accessList
*/
public function addResourceAccess($resourceName, $accessList){ }
/**
* Removes an access from a resource
*
* @param string $resourceName
* @param mixed $accessList
*/
public function dropResourceAccess($resourceName, $accessList){ }
/**
* Checks if a role has access to a resource
*
* @param string $roleName
* @param string $resourceName
* @param string $access
* @param string $action
*/
protected function _allowOrDeny(){ }
/**
* Allow access to a role on a resource
*
* You can use '*' as wildcard
*
* Example:
*
* //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', array('search', 'create'));
*
* //Allow access to any role to browse on products
* $acl->allow('*', 'products', 'browse');
*
* //Allow access to any role to browse on any resource
* $acl->allow('*', '*', 'browse');
*
*
* @param string $roleName
* @param string $resourceName
* @param mixed $access
*/
public function allow($roleName, $resourceName, $access){ }
/**
* Deny access to a role on a resource
*
* You can use '*' as wildcard
*
* Example:
*
* //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', array('search', 'create'));
*
* //Deny access to any role to browse on products
* $acl->deny('*', 'products', 'browse');
*
* //Deny access to any role to browse on any resource
* $acl->deny('*', '*', 'browse');
*
*
* @param string $roleName
* @param string $resourceName
* @param mixed $access
* @return boolean
*/
public function deny($roleName, $resourceName, $access){ }
/**
* Check whether a role is allowed to access an action from a resource
*
*
* //Does andres have access to the customers resource to create?
* $acl->isAllowed('andres', 'Products', 'create');
*
* //Do guests have access to any resource to edit?
* $acl->isAllowed('guests', '*', 'edit');
*
*
* @param string $role
* @param string $resource
* @param string $access
* @return boolean
*/
public function isAllowed($role, $resource, $access){ }
/**
* Return an array with every role registered in the list
*
* @return \Phalcon\Acl\Role[]
*/
public function getRoles(){ }
/**
* Return an array with every resource registered in the list
*
* @return \Phalcon\Acl\Resource[]
*/
public function getResources(){ }
}
}