From 789ecd7eaba22dd03d28768a59d539f4aa3ece9a Mon Sep 17 00:00:00 2001 From: Matt Date: Thu, 7 Aug 2025 14:27:08 +0200 Subject: [PATCH] Refactor login flow to return redirect URL instead of direct navigation Move navigation responsibility from useAuth composable to login page component for better separation of concerns and component control. --- composables/useAuth.ts | 19 +++++++++++-------- pages/login.vue | 7 +++++-- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/composables/useAuth.ts b/composables/useAuth.ts index 2436dde..9fe8e97 100644 --- a/composables/useAuth.ts +++ b/composables/useAuth.ts @@ -79,16 +79,19 @@ export const useAuth = () => { if (sessionSuccess) { console.log('👤 User data retrieved from session:', user.value); - // Redirect to dashboard or intended page - console.log('🔄 Redirecting to:', response.redirectTo || '/dashboard'); - await navigateTo(response.redirectTo || '/dashboard'); - - return { success: true }; + // Return redirect URL for the component to handle + console.log('✅ Login successful, returning redirect URL:', response.redirectTo || '/dashboard'); + return { + success: true, + redirectTo: response.redirectTo || '/dashboard' + }; } else { console.warn('❌ Failed to get user data from session after login'); - // Still redirect since login was successful on server - await navigateTo('/dashboard'); - return { success: true }; + // Still return success with redirect since login was successful on server + return { + success: true, + redirectTo: '/dashboard' + }; } } diff --git a/pages/login.vue b/pages/login.vue index f404ff9..6e22048 100644 --- a/pages/login.vue +++ b/pages/login.vue @@ -185,10 +185,13 @@ const handleLogin = async () => { rememberMe: credentials.value.rememberMe }); - if (!result.success) { + if (result.success) { + // Handle redirect from the component + console.log('🔄 Login successful, redirecting to:', result.redirectTo); + await navigateTo(result.redirectTo || '/dashboard'); + } else { loginError.value = result.error || 'Login failed. Please check your credentials and try again.'; } - // If successful, the login method will handle the redirect } catch (error: any) { console.error('Login error:', error); loginError.value = authError.value || 'Login failed. Please check your credentials and try again.';