From 42777abf6d9b4744532246a4b0bcff81afca70f8 Mon Sep 17 00:00:00 2001 From: "Carlos (Almeira)" Date: Fri, 27 Mar 2026 09:37:59 -0500 Subject: [PATCH] fix: force rebuild and enable insecure cookies for HTTP access v1.1.0 --- Dockerfile | 1 + src/app/actions/auth.ts | 39 +++++++++++++++++++++++++-------------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6889c57..05447c9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,4 @@ +# BUILD_ID: 2024-03-27_T14_35_RESET FROM node:20-alpine AS base # Install dependencies only when needed diff --git a/src/app/actions/auth.ts b/src/app/actions/auth.ts index 5fd3033..9d68cc3 100644 --- a/src/app/actions/auth.ts +++ b/src/app/actions/auth.ts @@ -8,35 +8,40 @@ const ENDPOINT = process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT || 'https://appwrite. const PROJECT_ID = process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID || '69b84df5003bd8957c5c'; const COOKIE_NAME = `a_session_${PROJECT_ID.toLowerCase()}`; -// Password de emergencia (Lo ideal es que configures ADMIN_PASSWORD en las variables de entorno de Coolify) +// Password de emergencia (Configurado en Coolify) const ADMIN_PASSWORD = process.env.ADMIN_PASSWORD || 'AlmeiraAdmin2024*'; export async function login(prevState: any, formData: FormData) { const emailInput = formData.get('email') as string; const password = formData.get('password') as string; - const email = emailInput.trim().toLowerCase(); + const email = emailInput ? emailInput.trim().toLowerCase() : ''; - console.log('Intentando login para:', email); + // LOG DE VERSIÓN PARA CONFIRMAR DESPLIEGUE EN COOLIFY + console.log('--- ALMEIRA WEB VERSION 1.1.0 ---'); + console.log('Intento de login para:', email); - // Login de Emergencia Protegido (Súper Robusto) + // 1. Bypass de Emergencia (Prioridad Máxima) if (email === 'admin@almeira.com.co') { - console.log('Detectado correo de emergencia, verificando password...'); + console.log('>>> MODO EMERGENCIA: Verificando credenciales locales...'); if (password === ADMIN_PASSWORD) { + console.log('>>> MODO EMERGENCIA: Acceso concedido.'); const cookieStore = await cookies(); cookieStore.set(COOKIE_NAME, "admin-bypass-session", { path: "/", httpOnly: true, sameSite: "lax", - secure: false, // Temporalmente false para permitir login sin HTTPS válido + secure: false, // Permitir en HTTP (No Seguro) maxAge: 60 * 60 * 24 * 7, }); - console.log('Bypass de emergencia activado para admin'); + console.log('>>> MODO EMERGENCIA: Cookie guardada, redirigiendo a /dashboard'); return redirect('/dashboard'); } else { - return { error: 'Contraseña de administrador de emergencia incorrecta.' }; + console.log('>>> MODO EMERGENCIA: Password incorrecto.'); + return { error: 'Contraseña de emergencia incorrecta.' }; } } + // 2. Intento de Login Normal (Appwrite) try { const client = new Client() .setEndpoint(ENDPOINT) @@ -50,16 +55,20 @@ export async function login(prevState: any, formData: FormData) { path: "/", httpOnly: true, sameSite: "lax", - secure: false, // Temporalmente false + secure: false, // Permitir en HTTP (No Seguro) maxAge: 60 * 60 * 24 * 7, }); - console.log('Sesión de Appwrite creada exitosamente'); + console.log('>>> LOGIN APPWRITE: Sesión creada exitosamente'); } catch (error: any) { - if (error.code === 429) { - return { error: 'Límite de intentos excedido en Appwrite. Usa el acceso de emergencia si es urgente.' }; + console.error('>>> LOGIN ERROR:', error.message); + if (error.code === 401) { + return { error: 'Credenciales inválidas en Appwrite.' }; } - return { error: 'Credenciales inválidas. Verifica tus datos o usa el acceso de emergencia.' }; + if (error.code === 429) { + return { error: 'Límite de intentos excedido. Usa el acceso de emergencia.' }; + } + return { error: 'Error de conexión o datos inválidos.' }; } redirect('/dashboard'); @@ -78,7 +87,9 @@ export async function logout() { .setSession(sessionCookie.value); const account = new Account(client); await account.deleteSession('current'); - } catch(e) {} + } catch(e) { + console.error('Error al cerrar sesión en Appwrite:', e); + } } }