lernschiff/app
Boban Blaskovic 6de4131389 feat(license): EnsureActiveLicense full implementation + license/dashboard routes
- EnsureActiveLicense: full child-role check via licenseAssignments().isActive()
- License model: add isActive() method, fix fillable order, expires_at cast to date
- LicenseFactory: active/expired/inactive states
- routes/web.php: /dashboard with auth+license middleware, /lizenz-abgelaufen
- tests: EnsureActiveLicenseTest (3 tests — block/allow/teacher bypass)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 05:16:06 +02:00
..
Http feat(license): EnsureActiveLicense full implementation + license/dashboard routes 2026-05-22 05:16:06 +02:00
Models feat(license): EnsureActiveLicense full implementation + license/dashboard routes 2026-05-22 05:16:06 +02:00
Policies feat(auth): UserPolicy + LicensePolicy + TenantPolicy + ParentChildPolicy + EnsureActiveLicense placeholder 2026-05-22 01:42:00 +02:00
Providers fix(auth): register ParentChildPolicy via Gate::define (Pivot models not model-bound) 2026-05-22 01:46:14 +02:00
Scopes feat(tenant): HasUuid + TenantScope (null-user default-deny) + BelongsToTenant 2026-05-22 00:53:10 +02:00
Traits feat(tenant): HasUuid + TenantScope (null-user default-deny) + BelongsToTenant 2026-05-22 00:53:10 +02:00