# 🔧 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:** ```bash 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: ```sql 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`: ```java .requestMatchers(HttpMethod.GET, "/santo/**").permitAll() ``` El endpoint `/usuarios` está permitido **con autenticación**: ```java .anyRequest().authenticated() ``` --- ## 🧪 Testing ### Probar registro: ```bash 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): ```bash curl http://localhost:8080/santo/hoy ``` ### Probar ver usuarios (con token): ```bash # 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