feat: pantalla "Mi perfil" para funcionarios y estudiantes
Qué
Agrega la pantalla /perfil, accesible desde el menú del usuario en la barra superior ("Mi perfil"), para funcionarios y estudiantes. Los datos son de solo lectura; lo editable es la foto (solo estudiante) y la contraseña.
Cambios
Estudiante
-
Datos personales (solo lectura): documento, email, teléfonos y grupos, desde
GET /estudiantes/mi-perfil. - Foto de perfil: subir o cambiar (jpg/png, hasta 5 MB) con vista previa antes de guardar. El backend no borra la foto anterior del disco, así que se confirma antes de subir.
-
Foto en la barra superior: reemplaza a las iniciales y se actualiza al cambiarla, sin recargar (
FotoPerfilProviderenlib/foto-perfil-context.tsx, compartido entreTopBary el perfil).lib/foto-perfil-context.tsx, compartido entreTopBary el perfil). -
Mis instancias e incidencias: las activas del estudiante, de la más reciente a la más vieja, desde
GET /instancias/mis-instanciasyGET /incidencias/mis-incidencias. Son de solo lectura y sin link al detalle, porqueGET /instancias/{id}yGET /incidencias/{id}exigen permisos que el rol ESTUDIANTE no tiene.
Funcionario
-
Datos personales (solo lectura): email y rol, tomados de la sesión (
/auth/me).GET /funcionarios/{id}exigeVER_FUNCIONARIOS. -
Mis permisos: lista desplegable (cerrada por defecto) con los permisos de su rol en texto legible. No está agrupada por área: el agrupador vive en el MR de roles, que todavía no está en
dev.
Ambos
-
Cambiar contraseña con
PATCH /{funcionarios|estudiantes}/{id}/contrasenia. Avisa en vivo si la repetición no coincide. Como el backend invalida el token al cambiarla, al terminar se cierra la sesión y se pide volver a entrar (el formulario lo avisa antes de guardar).
Archivos
- Nuevos:
components/perfil/(MiPerfil,CambiarContraseniaForm,MisInstanciasCard,MisPermisosCard,SeccionCard),app/(app)/(secciones)/perfil/page.tsxylib/foto-perfil-context.tsx. - Modificados:
layout/AppShell.tsxylayout/TopBar.tsx(foto y link "Mi perfil");lib/students.ts(getMiPerfil);lib/instancias.tsylib/incidencias.ts(listMisInstancias/listMisIncidencias).
Cómo probar
- Funcionario: menú del usuario → "Mi perfil". Ver nombre, email y rol, y desplegar "Mis permisos".
- Estudiante: entrar a "Mi perfil" y verificar sus datos y la tabla de instancias e incidencias.
- Foto: elegir una imagen → se ve la vista previa → "Cancelar" vuelve a la foto anterior; "Guardar foto" la sube y se actualiza también la de la barrarechaza antes de subir.
- Contraseña: con la actual incorrecta → error en ese campo. Con una repetición distinta → aviso mientras se escribe. Con datos correctos → aviso de éxito y "Ir al inicio de sesión"; la contraseña nueva funciona al volver a entrar.