isStaff()) { return ($user->can('upload') || $user->can('edit_files') || $user->can('edit_others_files')) && $this->scope->allowsFolder($user, $folder); } return Folder::query()->whereKey($folder->id)->visibleToClient($user)->exists(); } public function update(User $user, Folder $folder): bool { if (! $user->isStaff()) { return $folder->isOwnedBy($user) && $user->can('create_own_folders'); } $permitted = $folder->isOwnedBy($user) ? $user->can('edit_files') : $user->can('edit_others_files'); return $permitted && $this->scope->allowsFolder($user, $folder); } public function delete(User $user, Folder $folder): bool { if (! $user->isStaff()) { return $folder->isOwnedBy($user) && $user->can('create_own_folders'); } $permitted = $folder->isOwnedBy($user) ? $user->can('delete_files') : $user->can('delete_others_files'); return $permitted && $this->scope->allowsFolder($user, $folder); } }