server = Server::ownedByCurrentTeam()->whereUuid($server_uuid)->firstOrFail(); $this->authorize('update', $this->server); $this->parameters = get_route_parameters(); $this->syncData(); } catch (\Throwable) { return redirect()->route('server.index'); } } public function toggleTerminal($password, $selectedActions = []) { try { $this->authorize('update', $this->server); // Check if user is admin or owner if (! auth()->user()->isAdmin()) { throw new \Exception('Only team administrators and owners can modify terminal access.'); } // Verify password if (! verifyPasswordConfirmation($password, $this)) { return 'The provided password is incorrect.'; } // Toggle the terminal setting $this->server->settings->is_terminal_enabled = ! $this->server->settings->is_terminal_enabled; $this->server->settings->save(); // Update the local property $this->isTerminalEnabled = $this->server->settings->is_terminal_enabled; $status = $this->isTerminalEnabled ? 'enabled' : 'disabled'; $this->dispatch('success', "Terminal access has been {$status}."); return true; } catch (\Throwable $e) { return handleError($e, $this); } } public function syncData(bool $toModel = false) { if ($toModel) { $this->authorize('update', $this->server); $this->validate(); // No other fields to sync for terminal access } else { $this->isTerminalEnabled = $this->server->settings->is_terminal_enabled; } } public function render() { return view('livewire.server.security.terminal-access'); } }