recursos-catolicos/SOLUCIONES_IMPLEMENTADAS.md

129 lines
3.6 KiB
Markdown

# 🔧 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