resolveRequestedTarget( $request, __('Folders can only be shared with clients or groups.'), ); $this->sharing->assign($folder, $assignable, $targetName); return $this->resource($request, $folder); } /** * Stop sharing a folder. */ public function destroy(Request $request, Folder $folder): FolderResource { Gate::authorize('update', $folder); [$assignable, $targetName] = $this->resolveRequestedTarget( $request, __('Folders can only be shared with clients or groups.'), ); $this->sharing->unassign($folder, $assignable, $targetName); return $this->resource($request, $folder); } private function resource(Request $request, Folder $folder): FolderResource { $folder = $folder->fresh() ?? $folder; $folder->load('assignments.assignable'); $user = $request->user(); if ($user !== null) { $folder->setRelation('trail', collect($this->trails->ancestors([$folder], $user)[$folder->id] ?? [])); } return new FolderResource($folder); } }