Authority\Authority::can PHP Method

can() public method

Determine if current user can access the given action and resource
public can ( $action, $resource, $resourceValue = null ) : boolean
return boolean
    public function can($action, $resource, $resourceValue = null)
    {
        $self = $this;
        if (!is_string($resource)) {
            $resourceValue = $resource;
            $resource = get_class($resourceValue);
        }
        $rules = $this->getRulesFor($action, $resource);
        if (!$rules->isEmpty()) {
            $allowed = array_reduce($rules->all(), function ($result, $rule) use($self, $resourceValue) {
                return $result && $rule->isAllowed($self, $resourceValue);
            }, true);
            $myRules = $rules->all();
            $last = end($myRules);
            $allowed = $allowed || $last->isAllowed($self, $resourceValue);
        } else {
            $allowed = false;
        }
        return $allowed;
    }

Usage Example

Example #1
0
 /**
  * Determines whether or not a consumer can view a resource.
  *
  * @param $rule
  * @param $resource
  * @return bool
  */
 private function can($rule, $resource)
 {
     // Guest access allowed
     if ('guest' == $rule) {
         return $this->permit();
     }
     if ($this->authority->can($rule, $resource)) {
         return $this->permit();
     }
     return false;
 }