Beispiel #1
0
 /**
  * Determine if one or more rules are allowed
  *
  * @param   string   $rule        Rule identifier.
  * @param   string   $resource    (optional) Resource identifier.
  * @param   string   $resourceId  (optional) Resource id.
  * @return  boolean
  */
 public function can($rule, $resource = null, $resourceId = null)
 {
     // Validate is super user
     if ($this->isSuperUser()) {
         return true;
     }
     // Permissions array
     $managerPermissions = $this->getPermissions();
     // Check rule exists
     if ($this->rules->hasRule($rule)) {
         $rule = $this->rules->getRule($rule);
         if ($resource && $rule->hasResource($resource)) {
             $resource = $rule->getResource($resource);
             if ($resource->hasIds() && $resourceId) {
                 return isset($managerPermissions[$rule->getRule()][$resource->getType()]) && in_array($resourceId, $managerPermissions[$rule->getRule()][$resource->getType()]);
             }
             return isset($managerPermissions[$rule->getRule()][$resource->getType()]) && !empty($managerPermissions[$rule->getRule()][$resource->getType()]);
         }
         return isset($managerPermissions[$rule->getRule()]) && !empty($managerPermissions[$rule->getRule()]);
     }
     return false;
 }