51 lines
4.4 KiB
JSON
51 lines
4.4 KiB
JSON
{
|
|
"task_id": "AUTH-MICROSOFT-REMEMBER-001",
|
|
"verdict": "pass",
|
|
"checked_criterion_ids": [
|
|
"SC-001",
|
|
"SC-002",
|
|
"SC-003",
|
|
"SC-004",
|
|
"SC-005",
|
|
"SC-006"
|
|
],
|
|
"checks": [
|
|
{
|
|
"criterion_id": "SC-001",
|
|
"criterion": "Globale Settings fuer Microsoft Auto-Remember Default und Remember-Token-TTL sind im Settings-Layer implementiert, validiert und mit stabilen Fallbacks verfuegbar (Default: Auto-Remember aus, TTL 30 Tage).",
|
|
"result": "pass",
|
|
"evidence": "SettingsLoginPersistenceGateway implementiert isMicrosoftAutoRememberDefault() mit Fallback false sowie getRememberTokenLifetimeDays() mit Fallback 30 und Range 1..365; Seeds sind in db/init/init.sql und db/updates/2026-03-10-microsoft-auto-remember.sql vorhanden; AdminSettingsService::buildPageData() liefert beide Werte; SettingsLoginPersistenceGatewayTest deckt Fallback/Validierung ab."
|
|
},
|
|
{
|
|
"criterion_id": "SC-002",
|
|
"criterion": "Tenant-Override fuer Microsoft Auto-Remember ist als 3-stufiges Modell (inherit/force_on/force_off) durchgaengig gespeichert, editierbar und im Runtime-Verhalten wirksam.",
|
|
"result": "pass",
|
|
"evidence": "tenant_auth_microsoft.auto_remember_mode (NULL/0/1) ist im Schema vorhanden; TenantMicrosoftAuthRepository liest/schreibt auto_remember_mode; TenantSsoService normalisiert Eingaben (inherit/0/1) und nutzt sie in shouldAutoRememberOnMicrosoftLogin(); Tenant-Form enthaelt das 3-stufige Select-Feld; Create/Edit repopulieren auto_remember_mode; TenantSsoServiceTest prueft Persistenz und Prioritaet."
|
|
},
|
|
{
|
|
"criterion_id": "SC-003",
|
|
"criterion": "Bei erfolgreicher Microsoft-Anmeldung wird genau dann ein Remember-Token gesetzt, wenn die effektive Policy dies erlaubt; bei force_off oder global aus + inherit wird kein Token gesetzt.",
|
|
"result": "pass",
|
|
"evidence": "In pages/auth/microsoft/callback().php erfolgt rememberUser() nur nach erfolgreichem loginUserById() und nur wenn TenantSsoService::shouldAutoRememberOnMicrosoftLogin() true liefert; die Policy-Methode liefert force_on=true, force_off=false, inherit=globaler Default; TenantSsoServiceTest deckt diese Policy-Faelle ab."
|
|
},
|
|
{
|
|
"criterion_id": "SC-004",
|
|
"criterion": "RememberMeService nutzt die konfigurierbare TTL fuer Token-Erstellung und Token-Rotation; die feste 30-Tage-Konstante steuert das Verhalten nicht mehr.",
|
|
"result": "pass",
|
|
"evidence": "RememberMeService verwendet lifetimeSeconds() sowohl bei create() als auch bei updateToken() (Rotation); lifetimeSeconds() liest getRememberTokenLifetimeDays() aus AuthSettingsGateway; AuthServicesFactory injiziert dieses Gateway in die Runtime-Instanz; RememberMeServiceTest verifiziert konfigurierte TTL und Fallback-Verhalten."
|
|
},
|
|
{
|
|
"criterion_id": "SC-005",
|
|
"criterion": "Admin-Settings- und Tenant-SSO-Formulare enthalten die neuen Felder barrierearm und vollstaendig lokalisiert (de/en), ohne AuthZ-/CSRF-/PRG-Regression.",
|
|
"result": "pass",
|
|
"evidence": "Admin-Settings-Form enthaelt remember_token_lifetime_days und microsoft_auto_remember_default; Tenant-SSO-Form enthaelt microsoft_auto_remember_mode; neue sichtbare Labels/Hinweise laufen ueber t() und sind in i18n/default_de.json sowie i18n/default_en.json vorhanden; CSRF+PRG bleiben in pages/admin/settings/index().php sowie Tenant create/edit POST-Flow erhalten; TenantAuthorizationPolicy::containsSsoFields() enthaelt microsoft_auto_remember_mode und ist durch TenantAuthorizationPolicyTest abgesichert."
|
|
},
|
|
{
|
|
"criterion_id": "SC-006",
|
|
"criterion": "Neue und angepasste PHPUnit-Tests decken Settings-Validierung, Tenant-Prioritaet und Remember-Policy-Verhalten ab; alle Pflicht-Gates QG-001/002/003/005/006 sind mit Evidenz PASS.",
|
|
"result": "pass",
|
|
"evidence": "Codeseitige Testabdeckung ist vorhanden (neue/erweiterte Tests fuer SettingsLoginPersistenceGateway, AdminSettingsServiceSessionPolicy, TenantSsoService, RememberMeService, TenantAuthorizationPolicy). Aktuelle Gate-Runs: QG-001 PASS (docker compose exec php vendor/bin/phpunit -> 555 Tests, 13476 Assertions, Exit 0), QG-002 PASS (phpstan: No errors), QG-003 PASS (CoreStarterkitContractTest: 11 Tests, 6253 Assertions), QG-006 PASS (composer cs:check: 0 fixable issues). QG-005 ist im execution-report als PASS dokumentiert (manueller Browser-Smoke fuer Admin Settings Security Tab, Tenant SSO und Microsoft Callback)."
|
|
}
|
|
]
|
|
}
|