onlyRolePermissionIds = $yes; $this->onlyAreasIds = $yes; return $this; } public function onlyRolePermissionSlugs($yes = true) { $this->onlyRolePermissionSlugs = $yes; return $this; } public function gatherAllPermissions($yes = true) { $this->gatherAllPermissions = $yes; return $this; } protected function getRoles() { /** @var AdminUser $model */ $model = $this->resource; if ($this->onlyRolePermissionIds) { return $model->roles()->pluck('id'); } elseif ($this->onlyRolePermissionSlugs) { return $model->roles()->pluck('slug'); } else { return AdminRoleResource::collection($this->whenLoaded('roles')); } } protected function getAreas() { /** @var AdminUser $model */ $model = $this->resource; if($this->onlyAreasIds) { return $model->areas()->pluck('areas.id'); } return AreaResource::collection($this->whenLoaded('areas')); } protected function getPermissions() { /** @var AdminUser $model */ $model = $this->resource; if ($this->gatherAllPermissions) { $perms = $model->allPermissions(); } else { $perms = $model->permissions(); } if ($this->onlyRolePermissionIds) { return $perms->pluck('id'); } elseif ($this->onlyRolePermissionSlugs) { return $perms->pluck('slug'); } elseif ($this->gatherAllPermissions) { return AdminPermissionResource::collection($perms); } else { return AdminPermissionResource::collection($this->whenLoaded('permissions')); } } }