Skip to content

Commit b1accb9

Browse files
committed
fix: streamline sign-in process by removing excessive logging, improving error handling, and ensuring proper redirection flow
1 parent 2c79181 commit b1accb9

1 file changed

Lines changed: 19 additions & 48 deletions

File tree

src/actions/auth/sign-in.ts

Lines changed: 19 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -17,95 +17,66 @@ const formSchema = z.object({
1717
});
1818

1919
export const signIn = async (data: z.infer<typeof formSchema>) => {
20-
try {
21-
console.log('[signIn] Iniciando proceso de autenticación');
22-
console.log('[signIn] Email recibido:', data.email);
23-
console.log('[signIn] RedirectTo:', data.redirectTo);
20+
// Variable para almacenar la URL de redirección después del try/catch
21+
let redirectUrl: string | null = null;
2422

23+
try {
2524
// Validar datos
2625
const validatedData = formSchema.parse(data);
2726
const { email, password } = validatedData;
2827

29-
console.log('[signIn] Datos validados correctamente');
30-
3128
// Buscar usuario
32-
console.log('[signIn] Buscando usuario en la base de datos...');
3329
const user = await prisma.user.findUnique({
3430
where: { email },
3531
});
3632

3733
if (!user) {
38-
console.log('[signIn] ERROR: Usuario no encontrado');
3934
throw new Error('Credenciales incorrectas.');
4035
}
4136

42-
console.log('[signIn] Usuario encontrado:', user.id);
43-
4437
// Verificar contraseña
45-
console.log('[signIn] Verificando contraseña...');
4638
const isPasswordValid = await bcrypt.compare(password, user.password);
4739

4840
if (!isPasswordValid) {
49-
console.log('[signIn] ERROR: Contraseña incorrecta');
5041
throw new Error('Credenciales incorrectas.');
5142
}
5243

53-
console.log('[signIn] Contraseña válida');
54-
5544
// Verificar si el email está verificado
5645
if (!user.emailVerified) {
57-
console.log('[signIn] ERROR: Email no verificado');
5846
throw new Error(`EMAIL_NOT_VERIFIED:${email}`);
5947
}
6048

61-
console.log('[signIn] Email verificado');
62-
6349
// Crear sesión
64-
console.log('[signIn] Creando sesión...');
6550
const session = await prisma.session.create({
6651
data: {
6752
userId: user.id,
6853
expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 7),
6954
},
7055
});
7156

72-
console.log('[signIn] Sesión creada:', session.id);
73-
7457
// Establecer cookie
75-
console.log('[signIn] Estableciendo cookie...');
76-
try {
77-
const cookieStore = cookies();
78-
cookieStore.set('sessionId', session.id, {
79-
httpOnly: true,
80-
secure: process.env.NODE_ENV === 'production',
81-
sameSite: 'lax',
82-
path: '/',
83-
maxAge: 60 * 60 * 24 * 365,
84-
});
85-
console.log('[signIn] Cookie establecida correctamente');
86-
} catch (cookieError) {
87-
console.error('[signIn] ERROR al establecer cookie:', cookieError);
88-
throw new Error('Error al establecer la sesión. Por favor, intenta nuevamente.');
89-
}
90-
91-
// Redirigir a la URL especificada o a home por defecto
92-
const redirectTo = data.redirectTo || '/';
93-
console.log('[signIn] Proceso completado exitosamente, redirigiendo a:', redirectTo);
58+
const cookieStore = cookies();
59+
cookieStore.set('sessionId', session.id, {
60+
httpOnly: true,
61+
secure: process.env.NODE_ENV === 'production',
62+
sameSite: 'lax',
63+
path: '/',
64+
maxAge: 60 * 60 * 24 * 365,
65+
});
9466

95-
// redirect() lanza una excepción especial en Next.js que no debe ser capturada
96-
// Esta es la forma correcta de redirigir desde un server action
97-
redirect(redirectTo);
67+
// Guardar URL de redirección para usar fuera del try/catch
68+
redirectUrl = data.redirectTo || '/';
9869
} catch (error) {
99-
console.error('[signIn] ERROR GENERAL:', error);
100-
console.error(
101-
'[signIn] Stack trace:',
102-
error instanceof Error ? error.stack : 'No stack available',
103-
);
104-
10570
// Re-lanzar el error para que el cliente lo maneje
10671
if (error instanceof Error) {
10772
throw error;
10873
}
10974
throw new Error('Error desconocido al iniciar sesión');
11075
}
76+
77+
// redirect() DEBE estar fuera del try/catch
78+
// porque lanza una excepción especial (NEXT_REDIRECT) que Next.js intercepta
79+
if (redirectUrl) {
80+
redirect(redirectUrl);
81+
}
11182
};

0 commit comments

Comments
 (0)