Boban Blaskovic
|
2fb1700075
|
test(user): soft-delete cascade + cross-tenant parent-child (Phase 5)
- UserSoftDeleteCascadeTest: verifies soft-delete cleans role_user,
parent_child, license_assignments while keeping soft-deleted users row
- cross-tenant parent-child attach test confirms withoutGlobalScope works
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-22 05:17:47 +02:00 |
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 |
Boban Blaskovic
|
a099f2a4dc
|
feat(auth): HasRole middleware with OR-semantics
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-22 01:41:10 +02:00 |
Boban Blaskovic
|
986f2afcff
|
fix(tenant): forceDelete guard, hasRole eager-load, write-path test, migration timestamps
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-22 01:07:26 +02:00 |
Boban Blaskovic
|
1709f0f171
|
feat(models): Tenant, User, Role, ParentChild pivot + factories with withRole/withLicense
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-22 00:54:07 +02:00 |
Boban Blaskovic
|
8eb1759d7e
|
feat(scaffold): Laravel 12 scaffold + .env.example
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-22 00:19:49 +02:00 |