diff --git a/SOLUCIONES_IMPLEMENTADAS.md b/SOLUCIONES_IMPLEMENTADAS.md
new file mode 100644
index 0000000..4dbf469
--- /dev/null
+++ b/SOLUCIONES_IMPLEMENTADAS.md
@@ -0,0 +1,128 @@
+# 🔧 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
diff --git a/backend/pom.xml b/backend/pom.xml
index 9334050..c254b43 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -19,7 +19,7 @@
Backend para la web de recursos católicos
- 25
+ 21
diff --git a/backend/src/main/java/es/recursoscatolicos/DataInitializer.java b/backend/src/main/java/es/recursoscatolicos/DataInitializer.java
index 1aec8ea..95f0c87 100644
--- a/backend/src/main/java/es/recursoscatolicos/DataInitializer.java
+++ b/backend/src/main/java/es/recursoscatolicos/DataInitializer.java
@@ -6,10 +6,12 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import es.recursoscatolicos.model.CalendarioLiturgico;
import es.recursoscatolicos.model.Grupo;
import es.recursoscatolicos.model.Parroquia;
+import es.recursoscatolicos.model.SantoDelDia;
import es.recursoscatolicos.model.VersoBiblico;
import es.recursoscatolicos.repository.CalendarioLiturgicoRepository;
import es.recursoscatolicos.repository.GrupoRepository;
import es.recursoscatolicos.repository.ParroquiaRepository;
+import es.recursoscatolicos.repository.SantoDelDiaRepository;
import es.recursoscatolicos.repository.VersoBiblicoRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -17,6 +19,7 @@ import org.springframework.boot.CommandLineRunner;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;
+import java.time.LocalDate;
import java.util.List;
@Component
@@ -28,12 +31,14 @@ public class DataInitializer implements CommandLineRunner {
private final GrupoRepository grupoRepository;
private final CalendarioLiturgicoRepository calendarioRepository;
private final VersoBiblicoRepository versoBiblicoRepository;
+ private final SantoDelDiaRepository santoDelDiaRepository;
@Override
public void run(String... args) throws Exception {
cargarParroquias();
cargarCalendario();
cargarVersosBiblicos();
+ cargarSantoDelDia();
}
private void cargarVersosBiblicos() throws Exception {
@@ -117,5 +122,40 @@ public class DataInitializer implements CommandLineRunner {
g.setParroquia(parroquia);
grupoRepository.save(g);
}
+
+ private void cargarSantoDelDia() {
+ if (santoDelDiaRepository.count() > 0) return;
+
+ log.info("Cargando Santos del Día para 2026...");
+
+ // Datos esenciales: el santo del día hoy (29 de junio de 2026) y algunos días cercanos
+ agregarSanto(LocalDate.of(2026, 6, 28), "San Ireneo", "obispo y mártir", "rojo");
+ agregarSanto(LocalDate.of(2026, 6, 29), "San Pedro y San Pablo", "apóstoles", "rojo");
+ agregarSanto(LocalDate.of(2026, 6, 30), "San Justo de Alcalá", null, "rojo");
+ agregarSanto(LocalDate.of(2026, 7, 1), "Santa María Goretti", null, "rojo");
+
+ // Días especiales del año
+ agregarSanto(LocalDate.of(2026, 1, 1), "Santa María, Madre de Dios", null, "rosa");
+ agregarSanto(LocalDate.of(2026, 12, 25), "Natividad del Señor", "Solemnidad", "blanco");
+ agregarSanto(LocalDate.of(2026, 8, 15), "Asunción de la Virgen María", null, "blanco");
+ agregarSanto(LocalDate.of(2026, 11, 1), "Todos los Santos", "Solemnidad nacional", "blanco");
+ agregarSanto(LocalDate.of(2026, 12, 8), "Inmaculada Concepción", "Patrona de España", "azul");
+
+ log.info("Santos del Día cargados correctamente.");
+ }
+
+ private void agregarSanto(LocalDate fecha, String santo, String descripcion, String color) {
+ SantoDelDia s = new SantoDelDia();
+ s.setFecha(fecha);
+ s.setSanto(santo);
+ s.setDescripcion(descripcion);
+ s.setColor(color);
+ try {
+ santoDelDiaRepository.save(s);
+ } catch (Exception e) {
+ // Si ya existe, ignorar el error (por la unicidad de fecha)
+ log.debug("Santo del día {} ya existe", fecha);
+ }
+ }
}
diff --git a/backend/src/main/java/es/recursoscatolicos/controller/UsuarioController.java b/backend/src/main/java/es/recursoscatolicos/controller/UsuarioController.java
new file mode 100644
index 0000000..7847f86
--- /dev/null
+++ b/backend/src/main/java/es/recursoscatolicos/controller/UsuarioController.java
@@ -0,0 +1,32 @@
+package es.recursoscatolicos.controller;
+
+import es.recursoscatolicos.dto.UsuarioDTO;
+import es.recursoscatolicos.repository.UsuarioRepository;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/usuarios")
+@RequiredArgsConstructor
+public class UsuarioController {
+
+ private final UsuarioRepository usuarioRepository;
+
+ /**
+ * Endpoint protegido para ver todos los usuarios registrados.
+ * Requiere autenticación. Útil para testing y administración.
+ */
+ @GetMapping
+ public ResponseEntity> listarUsuarios() {
+ List usuarios = usuarioRepository.findAll()
+ .stream()
+ .map(UsuarioDTO::from)
+ .toList();
+ return ResponseEntity.ok(usuarios);
+ }
+}