Exportar excel con imagen y ahora guarda las imagenes como .png

This commit is contained in:
2026-02-05 18:09:05 -04:00
parent 63c39e399e
commit f1bdce317f
13 changed files with 250 additions and 332 deletions

View File

@@ -1,8 +1,7 @@
// lib/auth.config.ts
import { SignInAction } from '@/feactures/auth/actions/login-action';
import { resfreshTokenAction } from '@/feactures/auth/actions/refresh-token-action';
import { CredentialsSignin, NextAuthConfig, Session, User } from 'next-auth';
import { DefaultJWT } from 'next-auth/jwt';
// import { DefaultJWT } from 'next-auth/jwt';
import CredentialProvider from 'next-auth/providers/credentials';
@@ -92,8 +91,6 @@ const authConfig: NextAuthConfig = {
refresh_token: response?.tokens.refresh_token ?? '',
refresh_expire_in: response?.tokens.refresh_expire_in ?? 0,
};
},
}),
],
@@ -101,11 +98,7 @@ const authConfig: NextAuthConfig = {
signIn: '/', //sigin page
},
callbacks: {
async jwt({ token, user }:{
user: User
token: any
}) {
async jwt({ token, user }: { user: User, token: any }) {
// 1. Manejar el inicio de sesión inicial
// El `user` solo se proporciona en el primer inicio de sesión.
if (user) {
@@ -120,7 +113,6 @@ const authConfig: NextAuthConfig = {
refresh_token: user.refresh_token,
refresh_expire_in: user.refresh_expire_in
}
// return token;
}
// 2. Si no es un nuevo login, verificar la expiración del token
@@ -131,42 +123,33 @@ const authConfig: NextAuthConfig = {
return token; // Si no ha expirado, no hacer nada y devolver el token actual
}
// console.log("Now Access Expire:",token.access_expire_in);
// 3. Si el token de acceso ha expirado, verificar el refresh token
// console.log("Access token ha expirado. Verificando refresh token...");
if (now > (token.refresh_expire_in as number)) {
// console.log("Refresh token ha expirado. Forzando logout.");
return null; // Forzar el logout al devolver null
}
// console.log("token:", token.refresh_token);
// 4. Si el token de acceso ha expirado pero el refresh token es válido, renovar
console.log("Renovando token de acceso...");
try {
const refresh_token = { token: token.refresh_token as string, user_id: Number(token.id) as number}
const res = await resfreshTokenAction(refresh_token);
const refresh_token = { token: token.refresh_token as string, user_id: Number(token.id) as number }
// console.log('res', res);
const res = await resfreshTokenAction(refresh_token);
if (!res || !res.tokens) {
throw new Error('Fallo en la respuesta de la API de refresco.');
}
}
// Actualizar el token directamente con los nuevos valores
token.access_token = res.tokens.access_token;
token.access_expire_in = res.tokens.access_expire_in;
token.refresh_token = res.tokens.refresh_token;
token.refresh_expire_in = res.tokens.refresh_expire_in;
console.log("Token renovado exitosamente.");
return token;
} catch (error) {
console.error("Error al renovar el token: ", error);
console.error(error);
return null; // Fallo al renovar, forzar logout
}
},
@@ -182,6 +165,7 @@ const authConfig: NextAuthConfig = {
email: token.email as string,
role: token.role as Array<{ id: number; rol: string }>,
};
console.log("Session: Habilitado");
return session;
},
},