Problem
Users already logged in locally should not re-open Keycloak login flow.
Goal
When /keycloak/login is hit and Laravel session exists, redirect directly to welcome/home URL.
Step 1: Add early auth check in redirect function
In keylockredirect(Request $request):
if (Auth::check()) {
return $this->redirectToWelcome($request, '[KC][REDIRECT] local session exists - redirect welcome');
}
This stops unnecessary Keycloak round-trips.
Step 2: Create env-based welcome resolver
private function resolveWelcomeUrl(): string
{
$configuredBase = rtrim((string) config('app.url', ''), '/');
if ($configuredBase !== '') {
return $configuredBase . '/';
}
return url('/');
}
APP_URL controls domain-specific target (motoshare.in, motoshare.jp, etc.).
Step 3: Centralize redirect + logging
private function redirectToWelcome(Request $request, string $logMessage = ''): RedirectResponse
{
$welcomeUrl = $this->resolveWelcomeUrl();
if ($logMessage !== '') {
Log::info($logMessage, [
'auth_id' => Auth::id(),
'to' => $welcomeUrl,
'host' => $request->getHost(),
]);
}
return redirect()->to($welcomeUrl);
}
Reusable in callback edge cases too.
Step 4: Handle stale callback states
In callback branches like missing/duplicate state, redirect to welcome instead of forcing login again.
Step 5: Configure environment
Set:
motoshare.in (India)
motoshare.jp (Japan)
Top comments (0)