Cambios en refresh token para no dar error. No actualiza access token de la cookie/session. Elimina access token de la cookie para forzar cerrar la session en caso de error

This commit is contained in:
2026-03-23 10:20:48 -04:00
parent 0666877811
commit f88ab2a971
7 changed files with 85 additions and 127 deletions

View File

@@ -1,27 +1,47 @@
'use server';
import { safeFetchApi } from '@/lib';
// import { safeFetchApi } from '@/lib';
import { refreshApi } from '@/lib/refreshApi'; // Importa la nueva instancia
import { cookies } from 'next/headers';
import { logoutResponseSchema } from '../schemas/logout';
export const logoutAction = async (user_id: string) => {
const payload = { user_id };
try {
const response = await refreshApi.post('/auth/sign-out', { user_id });
const [error, data] = await safeFetchApi(
logoutResponseSchema,
'/auth/sign-out',
'POST',
payload,
);
const parsed = logoutResponseSchema.safeParse(response.data);
if (error) {
console.error('Error:', error);
// Devuelve un objeto con la propiedad 'type' para que el callback de NextAuth lo reconozca como un error
return {
type: 'API_ERROR',
message: error.message,
};
if (!parsed.success) {
console.error('Error de validación en la respuesta de refresh token:', {
errors: parsed.error.errors,
receivedData: response.data,
});
return null;
}
return parsed.data;
} catch (error: any) { // Captura el error para acceso a error.response
console.error('Error al cerrar sesion:', error.response?.data || error.message);
return null;
}
// const payload = { user_id };
// const [error, data] = await safeFetchApi(
// logoutResponseSchema,
// '/auth/sign-out',
// 'POST',
// payload,
// );
// if (error) {
// console.error('Error:', error);
// // Devuelve un objeto con la propiedad 'type' para que el callback de NextAuth lo reconozca como un error
// return {
// type: 'API_ERROR',
// message: error.message,
// };
// }
(await cookies()).delete('refresh_token');
};

View File

@@ -1,4 +1,3 @@
// auth/actions/refresh-token-action.ts
'use server';
import { refreshApi } from '@/lib/refreshApi'; // Importa la nueva instancia
import {
@@ -10,7 +9,7 @@ export const resfreshTokenAction = async (refreshToken: RefreshTokenValue) => {
try {
const response = await refreshApi.patch('/auth/refresh', refreshToken);
const parsed = RefreshTokenResponseSchema.safeParse(response.data);
const parsed = RefreshTokenResponseSchema.safeParse(response.data);
if (!parsed.success) {
console.error('Error de validación en la respuesta de refresh token:', {