Skip to content

Feature: iniciar sesion con cuenta UTEC (Active Directory)

Agustín Cantero requested to merge feature/login-utec-ad into dev

Qué

Agrega el botón "Iniciar sesión con UTEC" al login, que llama a POST /auth/ad (login contra Active Directory) a través de un proxy /api/auth/ad propio. Sigue el mismo patrón que el login local y el de Google: el JWT se guarda en la cookie httpOnly desde un Route Handler, nunca llega al navegador.

Por qué

A pedido del área de Infraestructura, para exponer en la UI el nuevo método de login que agregó el backend.

Cambios

  • src/app/api/auth/ad/route.ts (nuevo): Route Handler que delega en proxyLogin, igual que /api/auth/google.
  • src/lib/auth.ts: loginWithAd(usuario, contrasenia).
  • src/lib/auth-paths.ts: agrega /auth/ad a BUSINESS_401_PATHS, para que un 401 (credenciales inválidas) lo maneje el formulario y no dispare el logout global de sesión muerta.
  • src/components/auth/UtecLoginForm.tsx (nuevo): campo Usuario (avisa si se escribe con @dominio) y Contraseña, mismo manejo de error que LoginForm.
  • src/components/auth/LoginForm.tsx: botón "UTEC" con el isotipo (public/isotipo_utec.svg) debajo del de Google.
  • docs/openapi.json: se actualiza con el contrato de POST /auth/ad.

Acción requerida en el deploy

Ninguna del lado del frontend. Depende de que el backend tenga configurado el AD (ver su propio MR); mientras no esté, el botón queda visible pero el login devuelve el 503 de "AD no configurado" tal cual lo manda el backend.

Cómo probar

  1. Ir a /login y hacer clic en "UTEC".
  2. Con credenciales de AD válidas y cuenta en SIENEP: entra igual que con el login local.
  3. Con credenciales incorrectas: alerta con el mensaje del backend, sin cerrar sesión ni redirigir.
  4. Con usuario escrito con @dominio: error de validación antes de enviar el formulario.
  5. Con el backend inalcanzable: "No se pudo conectar con el servidor."

Merge request reports

Loading