Skip to content

feat: pantalla "Mi perfil" para funcionarios y estudiantes

belen.varsi requested to merge feature/mi-perfil into dev

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 (FotoPerfilProvider en lib/foto-perfil-context.tsx, compartido entre TopBar y el perfil).lib/foto-perfil-context.tsx, compartido entre TopBar y el perfil).
  • Mis instancias e incidencias: las activas del estudiante, de la más reciente a la más vieja, desde GET /instancias/mis-instancias y GET /incidencias/mis-incidencias. Son de solo lectura y sin link al detalle, porque GET /instancias/{id} y GET /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} exige VER_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.tsx y lib/foto-perfil-context.tsx.
  • Modificados: layout/AppShell.tsx y layout/TopBar.tsx (foto y link "Mi perfil"); lib/students.ts (getMiPerfil); lib/instancias.ts y lib/incidencias.ts (listMisInstancias / listMisIncidencias).

Cómo probar

  1. Funcionario: menú del usuario → "Mi perfil". Ver nombre, email y rol, y desplegar "Mis permisos".
  2. Estudiante: entrar a "Mi perfil" y verificar sus datos y la tabla de instancias e incidencias.
  3. 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.
  4. 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.

Merge request reports

Loading