Se mejoro el disenio de partes, se genero la informacion mas precisa en los reportes y se carga el logo en las instanacias de las empresas

This commit is contained in:
2026-01-15 13:20:34 -06:00
parent ae1d7f0c58
commit 0a02a3e912
44 changed files with 1536 additions and 515 deletions

View File

@@ -12,19 +12,19 @@ import { redirect, type Cookies } from '@sveltejs/kit';
export function getServerApiUrl(): string {
// Primero intentar con INTERNAL_API_URL (para llamadas server-side en Docker)
let apiUrl = process.env.INTERNAL_API_URL;
// Si no está definida, usar VITE_API_URL del entorno runtime (no import.meta.env)
if (!apiUrl) {
apiUrl = process.env.VITE_API_URL;
}
// Como último recurso, usar el valor de build-time
if (!apiUrl) {
apiUrl = import.meta.env.VITE_API_URL;
// Reemplazar 'localhost' con 'backend' para llamadas desde el servidor (SSR)
apiUrl = apiUrl?.replace('localhost', 'backend').replace('127.0.0.1', 'backend').replace('anexo76-dev.aduanasoft.com', 'backend');
}
// Normalizar la URL: asegurar que termine con '/'
return apiUrl?.endsWith('/') ? apiUrl : `${apiUrl}/`;
}
@@ -43,8 +43,8 @@ export function getAuthTokens(cookies: Cookies) {
* Establece los tokens de autenticación en las cookies
*/
export function setAuthTokens(
cookies: Cookies,
accessToken: string,
cookies: Cookies,
accessToken: string,
refreshToken?: string
) {
cookies.set('access_token', accessToken, {
@@ -54,7 +54,7 @@ export function setAuthTokens(
secure: process.env.NODE_ENV === 'production',
maxAge: 60 * 60 * 24 * 7 // 7 días
});
if (refreshToken) {
cookies.set('refresh_token', refreshToken, {
path: '/',
@@ -95,7 +95,7 @@ export async function refreshAccessToken(
fetch: typeof globalThis.fetch
): Promise<string | null> {
const { refreshToken } = getAuthTokens(cookies);
if (!refreshToken) {
return null;
}
@@ -115,10 +115,10 @@ export async function refreshAccessToken(
}
const data = await response.json();
// Actualizar las cookies con los nuevos tokens
setAuthTokens(cookies, data.access_token, data.refresh_token);
return data.access_token;
} catch (error) {
console.error('🔄 [API] Error al refrescar token:', error);
@@ -210,9 +210,9 @@ export async function authenticatedFetch(
if (error && typeof error === 'object' && 'status' in error && 'location' in error) {
throw error;
}
console.error('🔴 [API] Error en authenticatedFetch:', endpoint, error);
// Retornar una respuesta de error simulada en lugar de lanzar
return new Response(JSON.stringify({ error: 'Network error', details: String(error) }), {
status: 500,
@@ -253,14 +253,14 @@ export async function validateAuth(
if (error && typeof error === 'object' && 'status' in error && 'location' in error) {
throw error;
}
console.error('🔐 [API] Error validando autenticación:', error);
if (redirectOnFail) {
clearAuthTokens(cookies);
throw redirect(303, redirectOnFail);
}
return null;
}
}