authorize('viewAny', Project::class); return view('settings.projects.index', [ 'projects' => Project::all(), ]); } public function create(Request $request): HtmxResponse { $this->authorize('create', Project::class); app(CreateProject::class)->create($request->user(), $request->input()); Toast::success('Project created.'); return htmx()->redirect(route('settings.projects')); } public function update(Request $request, Project $project): HtmxResponse { $this->authorize('update', $project); app(UpdateProject::class)->update($project, $request->input()); Toast::success('Project updated.'); return htmx()->redirect(route('settings.projects')); } public function delete(Project $project): RedirectResponse { $this->authorize('delete', $project); /** @var User $user */ $user = auth()->user(); try { app(DeleteProject::class)->delete($user, $project); } catch (ValidationException $e) { Toast::error($e->getMessage()); return back(); } Toast::success('Project deleted.'); return back(); } public function switch(Request $request, $projectId): RedirectResponse { /** @var User $user */ $user = auth()->user(); /** @var Project $project */ $project = $user->projects()->findOrFail($projectId); $this->authorize('view', $project); $user->current_project_id = $project->id; $user->save(); // check if the referer is settings/* if (str_contains($request->headers->get('referer'), 'settings')) { return redirect()->to($request->headers->get('referer')); } return redirect()->route('servers'); } }