user(); if (! $user) { return $next($request); } if (! $request->hasSession()) { return $next($request); } if ($user->hasCompletedOnboarding()) { $request->session()->forget(self::SESSION_KEY); return $next($request); } if (! $request->session()->get(self::SESSION_KEY, false)) { return $next($request); } if ($request->is(self::ALWAYS_ALLOW)) { return $next($request); } $step = strtolower(trim((string) ($user->onboarding_step ?? ''))); $route = match ($step) { 'verified' => route('setup.password.create'), 'password' => route('setup.username.create'), default => route('setup.email.create'), }; return redirect($route) ->with('status', 'Continue onboarding to finish switching this account to email-based login.'); } }