user(); if (! $user) { return $next($request); } $step = strtolower((string) ($user->onboarding_step ?? '')); if ($step === 'complete') { return $next($request); } // Always allow critical auth / setup paths through. if ($request->is(self::ALWAYS_ALLOW)) { return $next($request); } $target = match ($step) { 'email' => '/login', 'verified' => '/setup/password', 'password', 'username' => '/setup/username', default => '/setup/password', }; return redirect($target); } }