refactor: Remove console logs and warnings from authentication and API handling

This commit is contained in:
2025-11-02 13:53:29 -06:00
parent 886a3aeab3
commit 19472b840c
9 changed files with 8 additions and 77 deletions

View File

@@ -38,13 +38,10 @@ async function refreshToken(): Promise<string | null> {
const refreshTokenValue = localStorage.getItem('refresh_token');
if (!refreshTokenValue) {
console.warn('🔄 No refresh token available');
return null;
}
try {
console.log('🔄 [API] Intentando refrescar token...');
const response = await fetch(`${API_BASE_URL}/v1/auth/refresh`, {
method: 'POST',
headers: {
@@ -75,7 +72,6 @@ async function refreshToken(): Promise<string | null> {
// Guardar los nuevos tokens
if (data.access_token) {
console.log('✅ [API] Token refrescado exitosamente');
localStorage.setItem('access_token', data.access_token);
if (data.refresh_token) {
@@ -147,8 +143,6 @@ async function fetchApi<T = any>(
// Si recibimos 401 o 403 y no es el endpoint de refresh, intentar refrescar el token
if ((response.status === 401 || response.status === 403) && !endpoint.includes('/auth/refresh') && retryCount === 0) {
console.warn(`⚠️ [API] ${response.status} recibido en ${endpoint}, intentando refrescar token...`);
console.log(`⚠️ [API] Token actual disponible:`, token ? 'Sí (parcial: ' + token.substring(0, 20) + '...)' : 'No');
isRefreshing = true;
try {
@@ -156,13 +150,11 @@ async function fetchApi<T = any>(
if (newToken) {
// Token refrescado exitosamente
console.log(`✅ [API] Reintentando petición a ${endpoint} con nuevo token`);
onTokenRefreshed(newToken);
isRefreshing = false;
// Reintentar la petición original con el nuevo token
return await fetchApi<T>(endpoint, options, 1);
} else {
console.error(`❌ [API] No se pudo refrescar el token para ${endpoint}`);
isRefreshing = false;
// Retornar error 401 para que la capa superior lo maneje
return {
@@ -171,7 +163,6 @@ async function fetchApi<T = any>(
};
}
} catch (refreshError) {
console.error(`❌ [API] Error al refrescar token:`, refreshError);
isRefreshing = false;
return {
error: 'Error al refrescar la sesión',

View File

@@ -424,7 +424,6 @@ export const refreshAccessToken = async (): Promise<boolean> => {
const refreshToken = localStorage.getItem('refresh_token');
if (!refreshToken) {
console.warn('No refresh token available');
return false;
}
@@ -452,11 +451,9 @@ export const refreshAccessToken = async (): Promise<boolean> => {
// Actualizar también la cookie
setCookie('access_token', newAccessToken);
console.log('✅ Token refreshed successfully');
return true;
} catch (error) {
console.error('Error refreshing token:', error);
await logout();
return false;
}

View File

@@ -38,7 +38,6 @@
const isSecure = window.location.protocol === 'https:';
const secureFlag = isSecure ? '; Secure' : '';
document.cookie = `access_token=; path=/; expires=Thu, 01 Jan 1970 00:00:00 UTC; SameSite=Lax${secureFlag}`;
console.log('🧹 Cookies del cliente limpiadas');
}
}

View File

@@ -12,7 +12,6 @@ export type SSOProvider = 'microsoft' | 'google' | 'github';
*/
export const loginWithProvider = async (provider: SSOProvider): Promise<void> => {
if (!browser) {
console.warn('loginWithProvider solo funciona en el navegador');
return;
}
@@ -40,11 +39,6 @@ export const loginWithProvider = async (provider: SSOProvider): Promise<void> =>
// URL de login de Keycloak con el provider específico
const loginUrl = `${keycloakUrl}/realms/${realm}/protocol/openid-connect/auth?client_id=${clientId}&redirect_uri=${redirectUri}&response_type=code&scope=openid&kc_idp_hint=${provider}`;
console.log('🔐 Iniciando login con', provider);
console.log('📍 URL de Keycloak:', keycloakUrl);
console.log('🏰 Realm:', realm);
console.log('🔑 Client ID:', clientId);
// Redirigir al usuario al proveedor SSO
window.location.href = loginUrl;
} catch (error) {

View File

@@ -8,10 +8,6 @@ export const load: PageServerLoad = async ({ url, cookies }) => {
const errorParam = url.searchParams.get('error');
const errorDescription = url.searchParams.get('error_description');
console.log('🔄 [Callback Server] Procesando callback de autenticación');
console.log('📝 [Callback Server] Código recibido:', code ? 'Sí' : 'No');
console.log('📝 [Callback Server] State recibido:', state);
if (errorParam) {
console.error('❌ [Callback Server] Error en autenticación:', errorParam, errorDescription);
throw redirect(303, `/login?error=${encodeURIComponent(errorDescription || errorParam)}`);
@@ -34,10 +30,6 @@ export const load: PageServerLoad = async ({ url, cookies }) => {
// La redirect_uri debe coincidir exactamente con la registrada en Keycloak
const redirectUri = `${url.origin}/auth/callback`;
console.log('🔄 [Callback Server] Intercambiando código por tokens...');
console.log('📍 [Callback Server] Keycloak URL:', KEYCLOAK_URL);
console.log('📍 [Callback Server] Redirect URI:', redirectUri);
const tokenEndpoint = `${KEYCLOAK_URL}/realms/${KEYCLOAK_REALM}/protocol/openid-connect/token`;
const body = new URLSearchParams({
@@ -63,7 +55,6 @@ export const load: PageServerLoad = async ({ url, cookies }) => {
}
const tokens = await tokenResponse.json();
console.log('✅ [Callback Server] Tokens recibidos exitosamente');
// Establecer las cookies en el servidor (esto es lo importante)
// Las cookies deben ser HttpOnly y Secure en producción
@@ -87,8 +78,6 @@ export const load: PageServerLoad = async ({ url, cookies }) => {
});
}
console.log('✅ [Callback Server] Cookies establecidas exitosamente');
// Obtener la URL de redirección del state o ir al dashboard
let redirectTo = '/dashboard';
if (state) {
@@ -100,8 +89,6 @@ export const load: PageServerLoad = async ({ url, cookies }) => {
}
}
console.log('🚀 [Callback Server] Redirigiendo a:', redirectTo);
// Redirigir a la página de destino
throw redirect(303, redirectTo);

View File

@@ -1,12 +1,5 @@
<script lang="ts">
import { onMount } from 'svelte';
import { browser } from '$app/environment';
onMount(() => {
if (browser) {
console.log('🔄 [Callback Client] Esperando procesamiento del servidor...');
}
});
</script>
<div class="min-h-screen flex items-center justify-center bg-gray-50 py-12 px-4 sm:px-6 lg:px-8">

View File

@@ -24,9 +24,7 @@ export const load: LayoutServerLoad = async ({ cookies, url, fetch }) => {
const baseUrl = apiUrl?.endsWith('/') ? apiUrl : `${apiUrl}/`;
// Validar el token con el backend para asegurar que sea válido
try {
console.log('🔐 [Dashboard] Validando token con:', `${baseUrl}v1/auth/me`);
try {
const response = await fetch(`${baseUrl}v1/auth/me`, {
headers: {
'Authorization': `Bearer ${token}`
@@ -34,9 +32,7 @@ export const load: LayoutServerLoad = async ({ cookies, url, fetch }) => {
});
// Si el token está expirado (401) y tenemos refresh token, intentar refrescar
if (response.status === 401 && refreshToken) {
console.log('🔄 [Dashboard] Token expirado, intentando refrescar...');
if (response.status === 401 && refreshToken) {
try {
const refreshResponse = await fetch(`${baseUrl}v1/auth/refresh`, {
method: 'POST',
@@ -70,7 +66,6 @@ export const load: LayoutServerLoad = async ({ cookies, url, fetch }) => {
// Usar el nuevo token para obtener la info del usuario
token = refreshData.access_token;
console.log('✅ [Dashboard] Token refrescado exitosamente');
// Reintentar la validación con el nuevo token
const retryResponse = await fetch(`${baseUrl}v1/auth/me`, {
@@ -86,9 +81,7 @@ export const load: LayoutServerLoad = async ({ cookies, url, fetch }) => {
user: userData
};
}
} else {
console.log('❌ [Dashboard] Refresh token también está expirado');
}
}
} catch (refreshError) {
console.error('🔐 [Dashboard] Error al refrescar token:', refreshError);
}

View File

@@ -30,13 +30,7 @@ export const load: PageServerLoad = async ({ cookies, fetch, url, parent }) => {
}
// Normalizar la URL
const baseUrl = apiUrl?.endsWith('/') ? apiUrl : `${apiUrl}/`;
console.log('📊 [Code Pedimento Regimens] Fetching data:', {
url: `${baseUrl}v1/code-pedimento-regimens`,
page,
pageSize
});
const baseUrl = apiUrl?.endsWith('/') ? apiUrl : `${apiUrl}/`;
const response = await fetch(
`${baseUrl}v1/code-pedimento-regimens?page=${page}&page_size=${pageSize}`,
@@ -66,11 +60,6 @@ export const load: PageServerLoad = async ({ cookies, fetch, url, parent }) => {
}
const data = await response.json();
console.log('📊 [Code Pedimento Regimens] Data loaded:', {
total: data.total,
itemsCount: data.items?.length
});
return {
items: data.items || [],

View File

@@ -27,7 +27,6 @@
const localToken = localStorage.getItem('access_token');
if (cookieToken && cookieToken !== localToken) {
console.log('🔄 [Page] Sincronizando token de cookies a localStorage');
localStorage.setItem('access_token', cookieToken);
}
@@ -36,7 +35,6 @@
const localRefreshToken = localStorage.getItem('refresh_token');
if (cookieRefreshToken && cookieRefreshToken !== localRefreshToken) {
console.log('🔄 [Page] Sincronizando refresh_token de cookies a localStorage');
localStorage.setItem('refresh_token', cookieRefreshToken);
}
}
@@ -57,18 +55,9 @@
loading = true;
error = null;
try {
console.log(`📊 [Page] Cargando página ${currentPage + 1}...`);
console.log(`📊 [Page] Token disponible:`, localStorage.getItem('access_token') ? 'Sí' : 'No');
try {
const response = await codePedimentoRegimensApi.list(currentPage + 1, pageSize);
console.log(`📊 [Page] Respuesta recibida:`, {
error: response.error,
status: response.status,
hasData: !!response.data
});
if (response.error) {
console.error('📊 [Page] Error en loadMore:', response.error, 'Status:', response.status);
@@ -85,8 +74,7 @@
return;
}
if (response.data?.items) {
console.log(`📊 [Page] Cargados ${response.data.items.length} items adicionales`);
if (response.data?.items) {
// Agregar los nuevos items al array existente
allItems = [...allItems, ...response.data.items];
currentPage++;