コード例 #1
0
ファイル: AclResourceBuilder.php プロジェクト: reliv/rcm-user
 /**
  * buildParent
  *
  * @param AclResource $resource
  *
  * @return AclResource
  * @throws RcmUserException
  */
 public function buildParent(AclResource $resource)
 {
     $parentResourceId = $resource->getParentResourceId();
     // root parent must be null
     if ($resource->getResourceId() == $this->rootResource->getResourceId()) {
         $resource->setParentResourceId(null);
         return $resource;
     }
     if (empty($parentResourceId)) {
         $resource->setParentResourceId($this->rootResource->getResourceId());
     }
     return $resource;
 }
コード例 #2
0
 /**
  * getResourceStack
  *
  * @param AclResource $resource
  * @param array       $resources
  * @param int         $nestLevel
  *
  * @return array
  * @throws RcmUserException
  */
 public function getResourceStack(AclResource $resource, $resources = [], $nestLevel = 0)
 {
     if ($nestLevel > $this->maxResourceNesting) {
         throw new RcmUserException('Max resource nesting exceeded, max nesting level is ' . $this->maxResourceNesting);
     }
     $tempResource = [$resource->getResourceId() => $resource];
     $resources = $tempResource + $resources;
     $parentResourceId = $resource->getParentResourceId();
     $hasParent = $parentResourceId !== null;
     if ($hasParent) {
         $parentResource = $this->resourceProvider->getResource($parentResourceId);
         $nestLevel++;
         return $this->getResourceStack($parentResource, $resources, $nestLevel);
     }
     return $resources;
 }
コード例 #3
0
ファイル: AclResource.php プロジェクト: reliv/rcm-user
 /**
  * @deprecated Should only require parentResourceId
  * setParentResource
  *
  * @param AclResource $parentResource parentResource
  *
  * @return void
  */
 public function setParentResource(AclResource $parentResource)
 {
     $this->setParentResourceId($parentResource->getResourceId());
     $this->parentResource = $parentResource;
 }
コード例 #4
0
 /**
  * buildResources - build static resources
  *
  * @return void
  */
 protected function buildResources()
 {
     $privileges = ['read', 'update', 'create', 'delete'];
     $userPrivileges = ['read', 'update', 'create', 'delete', 'update_credentials'];
     /* parent resource */
     $resource = new AclResource(self::RESOURCE_ID_ROOT);
     $resource->setName('RCM User');
     $resource->setDescription('All RCM user access.');
     $resource->setPrivileges($privileges);
     $this->resources[self::RESOURCE_ID_ROOT] = $resource;
     /* user edit */
     $resource = new AclResource(self::RESOURCE_ID_USER, self::RESOURCE_ID_ROOT, $userPrivileges);
     $resource->setName('User Administration');
     $resource->setDescription('Allows the editing of user data.');
     $this->resources[self::RESOURCE_ID_USER] = $resource;
     /* access and roles */
     $resource = new AclResource(self::RESOURCE_ID_ACL, self::RESOURCE_ID_ROOT, $privileges);
     $resource->setName('Role and Access Administration');
     $resource->setDescription('Allows the editing of user access and role data.');
     $resource->setParentResourceId(self::RESOURCE_ID_ROOT);
     $this->resources[self::RESOURCE_ID_ACL] = $resource;
 }
コード例 #5
0
ファイル: ResourceCache.php プロジェクト: reliv/rcm-user
 /**
  * set
  *
  * @param AclResource $resource
  *
  * @return void
  */
 public function set(AclResource $resource)
 {
     $resourceId = $resource->getResourceId();
     $this->resourceStorage->setItem($resourceId, $resource);
 }
コード例 #6
0
 /**
  * createNamespaceId
  *
  * @param AclResource $aclResource
  * @param             $aclResources
  * @param null        $namespaceSeparator
  *
  * @return string
  */
 public function createNamespaceId(AclResource $aclResource, $aclResources, $namespaceSeparator = null)
 {
     $parentId = $aclResource->getParentResourceId();
     $namespace = $aclResource->getResourceId();
     if (!empty($parentId) && isset($aclResources[$parentId])) {
         $parent = $aclResources[$parentId];
         $newNamespace = $this->createNamespaceId($parent, $aclResources, $namespaceSeparator);
         $namespace = $newNamespace . $this->getNamespaceSeparator($namespaceSeparator) . $namespace;
     }
     return $namespace;
 }