recursos-catolicos/SOLUCIONES_IMPLEMENTADAS.md

3.6 KiB

🔧 Soluciones Implementadas - Recursos Católicos

Resumen de cambios realizados

1. 🔴 Problema: "No sé dónde ver los usuarios registrados"

Solución implementada:

  • Creado nuevo endpoint /usuarios (protegido)
  • Solo accesible para usuarios autenticados

Cómo usarlo:

  1. Regístrate y obtén un token JWT
  2. Haz una petición GET a: http://localhost:8080/usuarios
  3. Incluye el header: Authorization: Bearer {tu_token}
  4. Recibirás un JSON con todos los usuarios registrados

Ejemplo con curl:

curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:8080/usuarios

Archivos modificados:

  • UsuarioController.java (creado nuevo)

2. 🟡 Problema: "Santo del día no funciona incluso sin estar logeado"

Causa identificada:

  • El controlador /santo/hoy estaba bien configurado en seguridad (permitido sin autenticación)
  • El problema: La BD no tenía datos de Santos del Día inicializados

Soluciones implementadas:

Opción A: Inicialización automática (Recomendado )

  • Actualizado DataInitializer.java para cargar automáticamente Santos del Día al arrancar la app
  • Incluye datos para fechas importantes (hoy 29/06/2026, Navidad, Pascua, etc.)

Cómo usarlo:

  1. Reinicia el backend
  2. La BD se inicializará automáticamente
  3. El endpoint /santo/hoy devuelve: San Pedro y San Pablo (29/06/2026)

Opción B: Carga manual desde SQL

Si necesitas todos los datos del año, ejecuta manualmente:

mysql -u rc_user -p recursoscatolicos < backend/src/main/resources/db/init.sql

Archivos modificados:

  • DataInitializer.java (añadido método cargarSantoDelDia())

⚙️ Configuración de Seguridad

El endpoint /santo/hoy está permitido sin autenticación en SecurityConfig.java:

.requestMatchers(HttpMethod.GET, "/santo/**").permitAll()

El endpoint /usuarios está permitido con autenticación:

.anyRequest().authenticated()

🧪 Testing

Probar registro:

curl -X POST http://localhost:8080/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "nombre": "Juan Pérez",
    "email": "juan@ejemplo.com",
    "password": "Segura123!",
    "tipoUsuario": "individual"
  }'

Probar Santo del Día (sin login):

curl http://localhost:8080/santo/hoy

Probar ver usuarios (con token):

# Primero haz login para obtener el token
curl -X POST http://localhost:8080/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "juan@ejemplo.com",
    "password": "Segura123!"
  }'

# Usa el token recibido:
curl -H "Authorization: Bearer {token}" http://localhost:8080/usuarios

📋 Próximos pasos recomendados

  1. Ampliar datos de Santos del Día

    • Actualiza cargarSantoDelDia() con todos los días del año
    • O crea un JSON santos-del-dia.json y cárgalo como los otros datos
  2. Crear panel de administración

    • Endpoint para crear/editar parroquias
    • Endpoint para gestionar usuarios (lista completa, borrar, editar)
  3. Mejorar autenticación

    • Implementar roles (ADMIN, USUARIO, etc.)
    • Restringir acceso a ciertos endpoints según rol
  4. Base de datos

    • Crear usuario de BD con contraseña fuerte (cambiar 'TU_PASSWORD_SEGURA' en init.sql)
    • Hacer backup regularmente

📝 Notas importantes

  • El token JWT expira cada 24 horas (configurable en application.properties)
  • Los datos de ejemplo de parroquias se crean automáticamente en la primera ejecución
  • El frontend usa API_BASE = "http://localhost:8080" en desarrollo