public function getAcl() { if ($this->acl) { return $this->acl; } $cache = $this->getCache(); if ($cache && ($data = $cache->get('acl'))) { return $this->acl = $data; } $acl = new MemoryAcl(); $acl->setDefaultAction(Acl::DENY); $roles = Entities\Roles::find(); foreach ($roles as $role) { $roleName = $role->name ? $role->name : $role->roleKey; $acl->addRole($role->roleKey, $role->roleKey); } $resources = Entities\Resources::find(); foreach ($resources as $resource) { $acl->addResource($resource->resourceKey); } $operations = Entities\Operations::find(); foreach ($operations as $operation) { $acl->addResourceAccess($operation->resourceKey, $operation->operationKey); if ($operation->roles) { foreach ($operation->roles as $role) { $acl->allow($role->roleKey, $operation->resourceKey, $operation->operationKey); } } } if ($cache) { $cache->save('acl', $acl); } return $this->acl = $acl; }
public function addResourceAccess($resourceName, $accessList) { return parent::addResourceAccess($resourceName, $accessList); }