Skip to content

Fix: no crear usuarios de prueba con contraseñas hardcodeadas por defecto

belen.varsi requested to merge pft/fix/data-seeder-credenciales into master

Qué

Corrige el hallazgo crítico de la auditoría de backend (2026-08-27):
DataSeeder creaba usuarios admin/tutor/psicopedagogo/legales/docente con
contraseñas hardcodeadas (Admin123!, etc.) y corría en cualquier perfil
salvo "test", incluida producción.

Por qué

El proyecto no fija spring.profiles.active en ningún entorno, así que
"todo menos test" en la práctica significaba "también producción". El
riesgo: cualquiera con acceso al repo (actual, histórico, o un fork
filtrado) conoce el email y la contraseña del admin.

Cambios

  • DataSeeder.java: @Profile("!test") → @ConditionalOnProperty(name =
    "app.seed-demo-users", havingValue = "true"). Default false, seguro
    por defecto.
  • application.properties: nueva property app.seed-demo-users con
    default false vía SEED_DEMO_USERS.
  • .env.example: documentada la variable SEED_DEMO_USERS=true para
    dev/local.

Cómo correr localmente con usuarios base precargados

Setear SEED_DEMO_USERS=true y BREVO_API_KEY (cualquier valor sirve en
local, solo se usa para armar el cliente HTTP de Brevo) en el entorno
de ejecución. Si tu Postgres local es de antes del commit db862266
(rol sintético → rol real), hace falta docker compose down -v +
up -d para que el schema traiga la columna id_rol.

Testing

  • Compila limpio (./mvnw compile).
  • Suite completa (516 tests) sigue pasando sin cambios — el perfil test
    no define SEED_DEMO_USERS, así que el comportamiento en tests es el
    mismo (el seeder no corre).
  • Probado el arranque completo end-to-end contra Postgres real: con
    SEED_DEMO_USERS=true se crean los 5 funcionarios base (ACTIVO), con
    SEED_DEMO_USERS sin definir no se crea ninguno.

Merge request reports

Loading