Пример #1
0
 /**
  * Which Models have the Permission for a resource?
  *
  * @param string       $permission_name
  * @param object       $resource
  * @param Closure|null $resolver
  *
  * @return Collection
  */
 public function allowedModels($permission_name, $resource, Closure $resolver = null)
 {
     $policy = $this->gate->getPolicyFor($resource);
     $policy_roles = $policy->fortress_roles();
     $check_roles = [];
     foreach ($policy_roles as $role_name => $permissions) {
         if (in_array($permission_name, $permissions)) {
             $check_roles[] = $role_name;
         }
     }
     $roles = Role::whereIn('role_name', $check_roles)->where('resource_type', get_class($resource))->where('resource_id', $resource->getKey())->get();
     if ($resolver) {
         return $resolver($roles);
     }
     $collection = collect();
     foreach ($roles as $role) {
         $tmp_instance = app($role->getModelType());
         $tmp_instance->find($role->getModelId());
         $collection->push($tmp_instance);
     }
     return $collection;
 }