073-unified-managed-tenant-onboarding-wizard #90

Merged
ahmido merged 7 commits from 073-unified-managed-tenant-onboarding-wizard into dev 2026-02-04 23:30:58 +00:00
Owner

Kontext / Ziel
Diese PR liefert den einzigen kanonischen Onboarding-Entry unter /admin/onboarding (workspace-first, tenantless bis zur Aktivierung) und ergänzt einen tenantless OperationRun-Viewer unter /admin/operations/{run} mit membership→404 Semantik.

Was ist enthalten?
Single entry point: /admin/onboarding ist der einzige Einstieg; Legacy Entry Points liefern echte 404 (keine Redirects).
Wizard v1 (Enterprise): idempotentes Identifizieren eines Managed Tenants (per Entra Tenant ID), resumable Session-Flow.
Provider Connection Step: Auswahl oder Erstellung, Secrets werden nie erneut gerendert / nicht in Session-State persistiert.
Verification als OperationRun: async/queued, DB-only Rendering im Wizard (keine Graph-Calls beim Rendern).
Tenantless Run Viewing: /admin/operations/{run} funktioniert ohne ausgewählten Workspace/Tenant, aber bleibt über Workspace-Mitgliedschaft autorisiert (non-member → 404).
RBAC-UX Semantik: non-member → 404, member ohne Capability → UI disabled + tooltip, server-side Action → 403.
Auditability: Aktivierung/Overrides sind auditierbar, stable action IDs, keine Secrets.
Tech / Version-Safety
Filament v5 / Livewire v4.0+ kompatibel.
Laravel 11+: Panel Provider Registrierung in providers.php (unverändert).
Tests / Format
vendor/bin/sail bin pint --dirty
Full suite: vendor/bin/sail artisan test --no-ansi → 984 passed, 5 skipped (exit 0)
Ops / Deployment Notes
Keine zusätzlichen Services vorausgesetzt.
Falls Assets registriert wurden: Deployment weiterhin mit php artisan filament:assets (wie üblich im Projekt).

Kontext / Ziel Diese PR liefert den einzigen kanonischen Onboarding-Entry unter /admin/onboarding (workspace-first, tenantless bis zur Aktivierung) und ergänzt einen tenantless OperationRun-Viewer unter /admin/operations/{run} mit membership→404 Semantik. Was ist enthalten? Single entry point: /admin/onboarding ist der einzige Einstieg; Legacy Entry Points liefern echte 404 (keine Redirects). Wizard v1 (Enterprise): idempotentes Identifizieren eines Managed Tenants (per Entra Tenant ID), resumable Session-Flow. Provider Connection Step: Auswahl oder Erstellung, Secrets werden nie erneut gerendert / nicht in Session-State persistiert. Verification als OperationRun: async/queued, DB-only Rendering im Wizard (keine Graph-Calls beim Rendern). Tenantless Run Viewing: /admin/operations/{run} funktioniert ohne ausgewählten Workspace/Tenant, aber bleibt über Workspace-Mitgliedschaft autorisiert (non-member → 404). RBAC-UX Semantik: non-member → 404, member ohne Capability → UI disabled + tooltip, server-side Action → 403. Auditability: Aktivierung/Overrides sind auditierbar, stable action IDs, keine Secrets. Tech / Version-Safety Filament v5 / Livewire v4.0+ kompatibel. Laravel 11+: Panel Provider Registrierung in providers.php (unverändert). Tests / Format vendor/bin/sail bin pint --dirty Full suite: vendor/bin/sail artisan test --no-ansi → 984 passed, 5 skipped (exit 0) Ops / Deployment Notes Keine zusätzlichen Services vorausgesetzt. Falls Assets registriert wurden: Deployment weiterhin mit php artisan filament:assets (wie üblich im Projekt).
ahmido added 6 commits 2026-02-04 23:19:55 +00:00
Implements workspace-scoped managed tenant onboarding wizard (Filament v5 / Livewire v4) with strict RBAC (404/403 semantics), resumable sessions, provider connection selection/creation, verification OperationRun, and optional bootstrap. Removes legacy onboarding entrypoints and adds Pest coverage + spec artifacts (073).
- Canonical /admin/onboarding entry point; legacy routes 404\n- Tenantless run viewer at /admin/operations/{run} with membership-based 404\n- RBAC UX (disabled controls + tooltips) and server-side 403\n- DB-only rendering/refresh; contract registry enforced\n- Adds migrations + tests + spec artifacts
- Ensure manual OperationRun inserts set workspace_id when events are disabled

- Align ManagedTenantOnboardingWizard tests with /admin/onboarding semantics

- Keep TenantFactory/creating hooks safe for make() vs create()
ahmido added 1 commit 2026-02-04 23:29:37 +00:00
# Conflicts:
#	app/Filament/Pages/Workspaces/ManagedTenantOnboardingWizard.php
#	app/Http/Controllers/SwitchWorkspaceController.php
#	app/Models/TenantOnboardingSession.php
#	app/Services/Auth/WorkspaceRoleCapabilityMap.php
#	app/Support/Audit/AuditActionId.php
#	app/Support/Auth/Capabilities.php
#	app/Support/Badges/BadgeCatalog.php
#	app/Support/Badges/BadgeDomain.php
#	resources/views/filament/pages/workspaces/managed-tenants-landing.blade.php
#	routes/web.php
#	specs/073-unified-managed-tenant-onboarding-wizard/checklists/requirements.md
#	specs/073-unified-managed-tenant-onboarding-wizard/contracts/http.openapi.yaml
#	specs/073-unified-managed-tenant-onboarding-wizard/contracts/onboarding-actions.md
#	specs/073-unified-managed-tenant-onboarding-wizard/data-model.md
#	specs/073-unified-managed-tenant-onboarding-wizard/plan.md
#	specs/073-unified-managed-tenant-onboarding-wizard/quickstart.md
#	specs/073-unified-managed-tenant-onboarding-wizard/research.md
#	specs/073-unified-managed-tenant-onboarding-wizard/spec.md
#	specs/073-unified-managed-tenant-onboarding-wizard/tasks.md
#	tests/Feature/Filament/AdminHomeRedirectsToChooseTenantWhenWorkspaceSelectedTest.php
#	tests/Feature/ManagedTenantOnboardingWizardTest.php
#	tests/Feature/Workspaces/SwitchWorkspaceRedirectsToTenantRegistrationWhenNoTenantsTest.php
ahmido merged commit 8e34b6084f into dev 2026-02-04 23:30:58 +00:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: ahmido/TenantAtlas#90
No description provided.