feat: MFA frontend with auth page restyling, challenge screen, and setup wizard

- Restyle organizer auth pages: Dutch text, remove placeholder social login
- Restyle portal auth pages to Vuexy v1 centered card pattern with decorative shapes
- MFA challenge card component with VOtpInput, method tabs, backup code input,
  trusted device checkbox, and session countdown timer
- Login pages handle mfa_required response with device fingerprint header
- Security settings page with TOTP setup (QR code), email setup, disable MFA,
  backup codes regeneration, and trusted devices management
- Portal profile page includes MFA security section
- Admin user detail page shows MFA status with reset button
- MFA enforcement route guard redirects to security settings when required
- Device fingerprint utility for trusted device identification
- MFA types, composables with TanStack Query for both apps

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-15 21:32:17 +02:00
parent a9e8e9bb62
commit 0be2956ea4
38 changed files with 3991 additions and 377 deletions

View File

@@ -40,6 +40,7 @@
"ofetch": "1.5.0",
"pinia": "3.0.3",
"prismjs": "1.30.0",
"qrcode": "^1.5.4",
"roboto-fontface": "0.10.0",
"shepherd.js": "13.0.3",
"ufo": "1.6.1",
@@ -84,6 +85,7 @@
"@tiptap/extension-underline": "^2.27.1",
"@types/mapbox-gl": "3.4.1",
"@types/node": "24.9.2",
"@types/qrcode": "^1.5.6",
"@types/webfontloader": "1.6.38",
"@typescript-eslint/eslint-plugin": "7.18.0",
"@typescript-eslint/parser": "7.18.0",