Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions context/core/userStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,13 @@ const useAuthStore = create<UserState>((set, get) => ({
try {
set({ loading: true, error: null });

// Inicia la promesa para refrescar la sesión
refreshSessionPromise = fetchAuthSession({ forceRefresh: true });
// Verificar si estamos en rutas donde no se debe hacer refresh
const pathname = window.location.pathname;
const NO_REFRESH_ROUTES = ['/first-steps', '/my-store'];
const shouldSkipRefresh = NO_REFRESH_ROUTES.includes(pathname);

// Inicia la promesa para refrescar la sesión (sin forceRefresh en rutas específicas)
refreshSessionPromise = fetchAuthSession({ forceRefresh: !shouldSkipRefresh });
const session = await refreshSessionPromise;

if (session && session.tokens) {
Expand All @@ -98,16 +103,16 @@ const useAuthStore = create<UserState>((set, get) => ({
get().clearUser();
}
} catch (error: any) {
console.error('Error al verificar la sesión del usuario:', error);
console.error('Error verifying user session:', error);

if (error.name === 'NotAuthorizedException' || (error.message && error.message.includes('revoked'))) {
console.warn('Token revocado detectado. Forzando cierre de sesión y recarga completa.');
console.warn('Token revoked detected. Forcing logout and full reload.');

try {
// Intenta cerrar sesión en Cognito, pero no dejes que falle si ya hay problemas
await signOut();
} catch (signOutError) {
console.error('Error secundario al intentar signOut forzado:', signOutError);
console.error('Secondary error when trying to force signOut:', signOutError);
} finally {
// La acción más importante: limpiar el estado y recargar la aplicación
get().clearUser();
Expand Down Expand Up @@ -174,7 +179,7 @@ const useAuthStore = create<UserState>((set, get) => ({
try {
await signOut();
} catch (error) {
console.error('Error durante el logout en Amplify:', error);
console.error('Error during logout:', error);
} finally {
get().clearUser();
get().cleanup();
Expand Down
2 changes: 1 addition & 1 deletion middlewares/store-access/store.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export async function handleStoreMiddleware(request: NextRequest, response: Next
return authResponse; // Si hay redirección de auth, retornarla
}

// Obtener la sesión del usuario (ya validada)
// Obtener la sesión del usuario (ya validada) - sin refresh para rutas específicas
const session = await getSession(request, response, false);

const userId = (session as AuthSession).tokens?.idToken?.payload?.['cognito:username'];
Expand Down