Skip to content

Fix #126: Deployment-Aktionen nur für Besitzer (Admin-Bypass entfernt) - #226

Merged
Gree44 merged 1 commit into
stagingfrom
fix/126-actions-owner-only
Jul 25, 2026
Merged

Fix #126: Deployment-Aktionen nur für Besitzer (Admin-Bypass entfernt)#226
Gree44 merged 1 commit into
stagingfrom
fix/126-actions-owner-only

Conversation

@Gree44

@Gree44 Gree44 commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Closes #126

Was

Das Gate für die Aktionen-Karte (Abbrechen/Löschen/Aufräumen/Erneut versuchen) in src/pages/DeploymentDetails.tsx ist jetzt rein besitzbasiert. Der explizite Admin-Bypass wurde entfernt:

-const canManageDeployment =
-  currentUser.isAdmin ||
-  (deployment.ownerId != null && deployment.ownerId === currentUser.userId);
+const canManageDeployment =
+  deployment.ownerId != null && deployment.ownerId === currentUser.userId;

Verhalten

  • Ein Admin (oder anderer Nicht-Besitzer), der ein fremdes Deployment öffnet, sieht die Aktions-Buttons ausgegraut mit Tooltip, behält aber vollen Lesezugriff (Logs, Credentials, Details) — diese Bereiche sind nicht durch canManageDeployment gegated.
  • Admins, die ein Deployment selbst besitzen, behalten ihre Aktionen.
  • Die vorhandene UX (disabled-Buttons + Tooltip) wurde nicht neu gebaut — sie keyt bereits auf canManageDeployment.

Hinweise

  • Das Backend erzwingt dies bereits auf den Mutations-Endpunkten (DELETE/extend/restart, 403 für Nicht-Besitzer-Nicht-Admins) via authorize_deployment_access. Dies ist somit eine reine UX-Schicht, die einen garantierten 403-Klick verhindert.
  • Der veraltete Doc-Kommentar ("Admins always bypass the check") wurde aktualisiert.
  • Produkt-Nuance: Das Issue formuliert "aus Administration". Da AdminProjectOverview dieselbe DeploymentDetails-Route ohne Source-Flag wiederverwendet, ist die Regel auf "jedes Deployment, das der Admin nicht besitzt" verallgemeinert — funktional deckungsgleich mit der Absicht des Issues.

Build

npm run build grün (nur vorbestehende, unabhängige CSS-Minify-Warnung).

Die Aktionen-Karte (Abbrechen/Löschen/Aufräumen/Erneut versuchen) im
Deployment-Detail wird jetzt rein anhand des Besitzes freigeschaltet.

Vorher enthielt das Gate einen expliziten Admin-Bypass:
  currentUser.isAdmin || (ownerId != null && ownerId === userId)
Damit behielten Admins die volle Aktions-Toolbox auf JEDEM Deployment –
das Gegenteil von #126.

Jetzt:
  deployment.ownerId != null && deployment.ownerId === currentUser.userId

Admins, die ein Deployment selbst besitzen, behalten ihre Aktionen; jeder
Nicht-Besitzer (inkl. Admins, die aus der Administration ein fremdes
Deployment öffnen) sieht die Buttons ausgegraut mit Tooltip, behält aber
vollen Lesezugriff (Logs, Credentials, Details) – diese sind nicht durch
canManageDeployment gegated.

Das Backend erzwingt dies bereits auf den Mutations-Endpunkten (403 für
Nicht-Besitzer-Nicht-Admins) via authorize_deployment_access – dies ist
also eine reine UX-Schicht. Doc-Kommentar entsprechend aktualisiert.
@RamonaKT
RamonaKT self-requested a review July 24, 2026 21:44
@Gree44
Gree44 merged commit 77f3cf4 into staging Jul 25, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants