spawner/frontend
XPS\Micro a4f85df93c feat: Phase 7 - Container-Level Blocking mit Admin-Dashboard UI und Cascading
**Neue Features:**
1. Container-Level Blocking: Admin kann einzelne Container blockieren/entsperren
2. User-Block Cascading: Wenn User gesperrt wird, werden automatisch alle seine Container blockiert
3. Launch-Protection: Blockierte Container können vom User nicht gestartet werden
4. Container-Verwaltungs-Tab im Admin-Dashboard mit Block/Unblock UI
5. Blocked-Status auf User-Dashboard mit visueller Markierung (rot)
6. Bulk-Operations für Container (Block/Unblock)

**Backend-Änderungen (admin_api.py):**
- GET /api/admin/users: Liefert nun auch Container-Liste mit is_blocked Status
- POST /api/admin/containers/<id>/block: Blockiert einzelnen Container
- POST /api/admin/containers/<id>/unblock: Entsperrt einzelnen Container
- POST /api/admin/containers/bulk-block: Blockiert mehrere Container
- POST /api/admin/containers/bulk-unblock: Entsperrt mehrere Container
- POST /api/admin/users/<id>/block: Cascade-Blockade aller Container (Phase 7)

**Backend-Änderungen (api.py):**
- GET /api/user/containers: Liefert is_blocked und blocked_at Felder
- POST /api/container/launch/<type>: Launch-Protection prüft is_blocked Flag

**Database-Änderungen (models.py):**
- UserContainer: Füge is_blocked, blocked_at, blocked_by Spalten hinzu
- Relationships für Blocker-Admin

**Frontend-Änderungen:**
- Admin-Dashboard: Neuer "Container-Verwaltung" Tab mit Grid-View
- Admin-Dashboard: Block/Unblock Buttons pro Container
- Admin-Dashboard: Bulk-Operations für Container-Selection
- User-Dashboard: Blocked-Badge und Blocked-Beschreibung in Container-Cards
- User-Dashboard: Disabled Button wenn Container blockiert
- User-Dashboard: Toast-Benachrichtigung bei Launch-Protection

**Migration:**
- Neue Datei: migrate_container_blocking.py für Database-Setup
  Verwendung: python migrate_container_blocking.py

**Sicherheit:**
- Blockierte Container werden mit stop_container() gestoppt
- Lazy-Init des ContainerManager für robuste Error-Handling
- Separate Admin-Endpoints mit @admin_required() Decorator
- Audit-Logging aller Block/Unblock-Operationen

**Testing-Punkte:**
- User-Block blockiert alle Container? ✓ Cascading
- Container-Block wird auf User-Dashboard angezeigt? ✓ is_blocked prüfen
- Launch-Protection funktioniert? ✓ 403 Error bei is_blocked
- Admin-Container-Tab funktioniert? ✓ Grid-View mit Search
- Bulk-Operations funktionieren? ✓ Multiple Selection + Confirm

Fixes: #0 (Phase 7 Implementation)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-02-04 22:44:06 +01:00
..
public Initial project structure with documentation 2026-01-30 18:00:41 +01:00
src feat: Phase 7 - Container-Level Blocking mit Admin-Dashboard UI und Cascading 2026-02-04 22:44:06 +01:00
.env.example Initial project structure with documentation 2026-01-30 18:00:41 +01:00
.gitignore Initial project structure with documentation 2026-01-30 18:00:41 +01:00
components.json feat: add shadcn sidebar to dashboard with navigation 2026-02-01 23:13:03 +01:00
Dockerfile fix: install curl in frontend Dockerfile for healthcheck compatibility 2026-01-31 13:34:51 +01:00
next.config.mjs Initial project structure with documentation 2026-01-30 18:00:41 +01:00
package-lock.json frontend mod 2026-02-02 18:02:13 +01:00
package.json fix: use exact sonner version and regenerate package-lock 2026-02-02 17:59:31 +01:00
postcss.config.mjs Initial project structure with documentation 2026-01-30 18:00:41 +01:00
tailwind.config.ts feat: add shadcn sidebar to dashboard with navigation 2026-02-01 23:13:03 +01:00
tsconfig.json feat: implement multi-container deletion, DSGVO compliance, and toast notifications 2026-02-02 17:19:48 +01:00