Feature: iniciar sesion con cuenta UTEC (Active Directory)
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 enproxyLogin, igual que/api/auth/google. -
src/lib/auth.ts:loginWithAd(usuario, contrasenia). -
src/lib/auth-paths.ts: agrega/auth/adaBUSINESS_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 queLoginForm. -
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 dePOST /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
- Ir a
/loginy hacer clic en "UTEC". - Con credenciales de AD válidas y cuenta en SIENEP: entra igual que con el login local.
- Con credenciales incorrectas: alerta con el mensaje del backend, sin cerrar sesión ni redirigir.
- Con usuario escrito con
@dominio: error de validación antes de enviar el formulario. - Con el backend inalcanzable: "No se pudo conectar con el servidor."