fix(panel): streamline system settings and server creation
Use shared action buttons and default to the login space. Allow staff to save startup-only experience settings while running and request a durable restart through the existing operator flow. Grant the API PVC list permission needed to detect retained worlds before server creation, and show internal failures with a request ID. Cover permission, maintenance, restart and UI behavior with regression checks.
This commit is contained in:
34 files changed
+555
-103
No files matched your search
@@ -92,6 +92,29 @@ func (a *API) handleWake(w http.ResponseWriter, r *http.Request) {
|
||||
writeJSON(w, http.StatusAccepted, map[string]any{"name": name, "desiredState": "Running"})
|
||||
}
|
||||
|
||||
// handleRestart records a restart request for the operator to consume once.
|
||||
func (a *API) handleRestart(w http.ResponseWriter, r *http.Request) {
|
||||
name, ok := a.authorizeServerFiles(w, r)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
rec, err := a.managedServerRecord(r.Context(), name)
|
||||
if err != nil {
|
||||
a.writeLookupError(w, r, err)
|
||||
return
|
||||
}
|
||||
if rec.Retire != nil {
|
||||
writeError(w, r, errServerRetiring)
|
||||
return
|
||||
}
|
||||
if err := a.Cluster.RestartServer(r.Context(), rec.Name); err != nil {
|
||||
a.writeLookupError(w, r, maintenanceError(err, "wait for maintenance to finish before restarting"))
|
||||
return
|
||||
}
|
||||
a.audit(r, "server.restart", rec.Name)
|
||||
writeJSON(w, http.StatusAccepted, map[string]string{"name": rec.Name, "desiredState": "Running"})
|
||||
}
|
||||
|
||||
// handleStop flips desiredState to Stopped. Only the owner or an admin may stop a
|
||||
// server (spec §14: operating someone else's server is admin-tier).
|
||||
func (a *API) handleStop(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
Reference in new issue
Block a user