user(); $this->authorize('viewAny', [Server::class, $user->currentProject]); $servers = $user->currentProject->servers()->orderByDesc('created_at')->get(); return view('servers.index', compact('servers')); } public function create(Request $request): View { /** @var User $user */ $user = auth()->user(); $this->authorize('create', [Server::class, $user->currentProject]); $provider = $request->query('provider', old('provider', \App\Enums\ServerProvider::CUSTOM)); $serverProviders = ServerProvider::getByProjectId(auth()->user()->current_project_id) ->where('provider', $provider) ->get(); return view('servers.create', [ 'serverProviders' => $serverProviders, 'provider' => $provider, ]); } /** * @throws Throwable */ public function store(Request $request): HtmxResponse { /** @var User $user */ $user = auth()->user(); $this->authorize('create', [Server::class, $user->currentProject]); $server = app(CreateServer::class)->create( $user, $request->input() ); Toast::success('Server created successfully.'); return htmx()->redirect(route('servers.show', ['server' => $server])); } public function show(Server $server): View { $this->authorize('view', $server); return view('servers.show', [ 'server' => $server, ]); } public function delete(Server $server): RedirectResponse { $this->authorize('delete', $server); $server->delete(); Toast::success('Server deleted successfully.'); return redirect()->route('servers'); } }