clusev/app/Livewire/Auth
boban 142b531d45 feat(auth): make password rotation optional + correct the 2FA copy
The seeded-password rotation was forced before the panel was reachable. It is now a
nudge, not a wall: the prompt shows once per session and can be skipped, and a standing
warning banner keeps reminding while the default password is still in use.

- EnsureSecurityOnboarded redirects to the password page only when must_change_password
  AND the session has not set onboarding.password_skipped (set by PasswordChange::skip,
  which lands on the dashboard WITHOUT rotating — so the flag/banner persist).
- app layout shows a default-password warning banner while must_change_password is true.
- the metrics broadcast channel no longer gates on securityOnboarded() — a deliberately
  un-rotated (but authenticated) operator would otherwise lose realtime metrics;
  /broadcasting/auth still runs in the web group (guest = 403), so it stays auth-gated.
- 2FA was already optional (never enforced) — only the login copy was wrong: "2FA
  required/enforced" → "recommended/optional" (de + en).

Browser-verified (R12): login → skippable prompt → dashboard banner → free navigation
(no re-redirect); login copy correct; zero console errors. Full suite 465 pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 19:47:17 +02:00
..
.gitkeep feat: scaffold — Dockerized Laravel 13 + Livewire 3 + Tailwind 4 + Reverb 2026-06-12 00:31:50 +02:00
ForgotPassword.php fix(security): harden brute-force, rate-limiting and auth-DoS (audit follow-up) 2026-06-17 17:59:45 +02:00
Login.php harden(auth): capture login IP once, assert 2fa-failed audit 2026-06-20 18:06:11 +02:00
PasswordChange.php feat(auth): make password rotation optional + correct the 2FA copy 2026-06-25 19:47:17 +02:00
ResetPassword.php fix(auth): toaster on auth pages + audit email-link resets 2026-06-14 17:07:52 +02:00
TwoFactorBackup.php feat(auth): feed BruteforceGuard from login + 2FA failures, audit them 2026-06-20 18:01:54 +02:00
TwoFactorChallenge.php feat(auth): feed BruteforceGuard from login + 2FA failures, audit them 2026-06-20 18:01:54 +02:00
TwoFactorSetup.php fix(2fa): bound the backup-code reveal flag with a 10-minute TTL 2026-06-15 18:42:58 +02:00