Implements Spec 089: moves Provider Connections to canonical tenantless route under `/admin/provider-connections`, enforces 404/403 semantics (workspace/tenant membership vs capability), adds tenant transparency (tenant column + filter + deep links), adds legacy redirects for old tenant-scoped URLs without leaking Location for 404 cases, and adds regression test coverage (RBAC semantics, filters, UI enforcement tooltips, Microsoft-only MVP scope, navigation placement). Notes: - Filament v5 / Livewire v4 compatible. - Global search remains disabled for Provider Connections. - Destructive/manage actions require confirmation and are policy-gated. Tests: - `vendor/bin/sail artisan test --compact tests/Feature/ProviderConnections` Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #107
38 lines
1.2 KiB
Markdown
38 lines
1.2 KiB
Markdown
# Quickstart — Spec 089 (Provider Connections tenantless UI)
|
||
|
||
## Prereqs
|
||
|
||
- Docker + Docker Compose
|
||
- Laravel Sail (project standard)
|
||
|
||
## Run locally
|
||
|
||
- Start services: `vendor/bin/sail up -d`
|
||
- Run migrations (if needed): `vendor/bin/sail artisan migrate`
|
||
- Run dev assets (if you’re checking UI): `vendor/bin/sail npm run dev`
|
||
|
||
## Key routes
|
||
|
||
- Canonical list: `/admin/provider-connections`
|
||
- Optional filter: `/admin/provider-connections?tenant_id=<tenant-external-id>`
|
||
- Legacy redirect (must remain ≥2 releases): `/admin/tenants/<tenant-external-id>/provider-connections` → canonical
|
||
|
||
## Run targeted tests
|
||
|
||
- Full suite (compact): `vendor/bin/sail artisan test --compact`
|
||
|
||
Suggested focused tests (adjust once implementation lands):
|
||
- `vendor/bin/sail artisan test --compact tests/Unit/Filament/ProviderConnectionResourceLivewireTenantInferenceTest.php`
|
||
- `vendor/bin/sail artisan test --compact tests/Unit/Policies/ProviderConnectionPolicyTenantResolutionTest.php`
|
||
|
||
## Formatting
|
||
|
||
- `vendor/bin/sail bin pint --dirty`
|
||
|
||
## Notes
|
||
|
||
- Non-workspace members must get 404.
|
||
- Non-tenant members must get 404 for direct record access.
|
||
- Tenant members missing capabilities must get 403.
|
||
- Global search must not expose Provider Connections.
|