.envUTB_API_URL=https://sai.utb.edu.ec/v2/ws/auth/loginUTB_API_APP_ID=6d834518ee8832b9455d3887aa0dc1a369bccee2d017812994ab066faae42067UTB_API_APP_TOKEN=c9449f3452c6645081282a01240c0679eb1ca1e440eebf322eb23d5f2260c2d4src/lib/config.tsutbApisrc/lib/utb-api.ts (nuevo)authenticateUser(username: string, password: string)X-App-Id, X-App-Token, Content-TypeUTBAuthResponseprisma/schema.prismaidentificacion String? @unique al modelo UserisExternalAuth Boolean @default(false) al modelo Useremail String? @unique (hacerlo opcional)password String? (hacerlo opcional)npx prisma migrate dev --name add_utb_fieldssrc/lib/auth.tsauthorize():
identificacion o usernamesrc/app/auth/login/page.tsxemail por usernamesrc/app/api/account/update/route.tspassword no sea null antes de bcrypt.comparesrc/types/utb-api.d.ts (nuevo)UTBAuthResponseUTBUserUTBErrorResponsesrc/components/account/*.tsx, src/app/account/page.tsxidentificacion (solo lectura)Migración exitosa a autenticación API UTB.
Decisión: El sistema ya no soporta usuarios locales. Todos los usuarios deben autenticarse mediante la API de UTB.
Cambios de simplificación realizados:
Componentes de cuenta simplificados:
PersonalInfoSection.tsx: Siempre muestra banner UTB, campos nombre/apellido bloqueadosPasswordChangeSection.tsx: Solo muestra mensaje de gestión por UTB, sin campos de contraseñaAPI de actualización simplificada:
isExternalAuthProps simplificadas:
isExternalAuth de componentes de cuentaPasswordChangeSection marcadas como opcionales por compatibilidadEstado actual:
Campos editables:
Campos bloqueados (gestionados por UTB):
/accounttipo de la APIuserId interno