Esempio n. 1
0
 /**
  * Retrieves existing ACL models with string names for non-existing.
  * @param string $roleName
  * @param string $resourceName
  * @param mixed $access array or string
  * @return AclAccessList[] array with AclAccessList models or string names on non-existing ACLs
  * @throws Exception
  */
 protected function getValidatedAclModels($roleName, $resourceName, $access)
 {
     if (($resourceName === Resource::WILDCARD || $access === Resource::ACCESS_WILDCARD) && !($resourceName === Resource::WILDCARD && $access === Resource::ACCESS_WILDCARD)) {
         throw new Exception("Cannot create access to '{$access}' in '{$resourceName}' for role {$roleName}");
     }
     $accesses = is_array($access) ? $access : [$access];
     $sanitizedResourceName = $this->filterResourceName($resourceName);
     return array_map(function ($accessName) use($roleName, $sanitizedResourceName) {
         $acl = AclAccessList::findFirstByRoleResourceAndAccess($roleName, $sanitizedResourceName, $accessName);
         return $acl ? $acl : $accessName;
     }, $accesses);
 }