- renombrar openspec/ a _openspec/ (carpeta auxiliar) - mover specs de features a changes/ - crear specs base: arquitectura-limpia, estandares-codigo, nomenclatura - migrar _planificacion/ con design-system y roi-theme-template - agregar especificacion recaptcha anti-spam (proposal, tasks, spec) - corregir rutas y referencias en todas las specs Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
133 lines
4.5 KiB
Markdown
133 lines
4.5 KiB
Markdown
# Tasks: reCAPTCHA v3 Anti-Spam Protection
|
|
|
|
## Fase 1: Especificación
|
|
- [x] Crear proposal.md
|
|
- [x] Crear tasks.md
|
|
- [x] Crear spec.md con formato Gherkin
|
|
- [ ] Obtener aprobación del usuario
|
|
|
|
## Fase 2: Implementación
|
|
|
|
### 2.1 Capa Domain (Contratos y Entidades)
|
|
- [ ] Crear `Shared/Domain/Contracts/RecaptchaValidatorInterface.php`
|
|
```php
|
|
interface RecaptchaValidatorInterface {
|
|
public function validate(string $token, string $action): RecaptchaResult;
|
|
}
|
|
```
|
|
- [ ] Crear `Shared/Domain/Entities/RecaptchaResult.php`
|
|
```php
|
|
final class RecaptchaResult {
|
|
public function __construct(
|
|
private bool $success,
|
|
private float $score,
|
|
private string $action,
|
|
private array $errorCodes = []
|
|
) {}
|
|
public function isValid(float $threshold): bool;
|
|
}
|
|
```
|
|
|
|
### 2.2 Capa Application (Servicios)
|
|
- [ ] Crear `Shared/Application/Services/RecaptchaValidationService.php`
|
|
- Orquestar validación
|
|
- Aplicar threshold configurable
|
|
- Logging de resultados
|
|
|
|
### 2.3 Capa Infrastructure (Implementación)
|
|
- [ ] Crear `Shared/Infrastructure/Services/GoogleRecaptchaValidator.php`
|
|
- Llamada HTTP a API de Google
|
|
- Manejo de errores y timeout
|
|
- Parseo de respuesta JSON
|
|
|
|
### 2.4 Schema y Admin UI
|
|
- [ ] Crear `Schemas/recaptcha-settings.json`
|
|
- Campos: is_enabled, site_key, secret_key, score_threshold, actions
|
|
- [ ] Sincronizar schema con BD: `wp roi-theme sync-component recaptcha-settings`
|
|
- [ ] Crear `Admin/RecaptchaSettings/Infrastructure/Ui/RecaptchaSettingsFormBuilder.php`
|
|
- [ ] Crear `Admin/RecaptchaSettings/Infrastructure/FieldMapping/RecaptchaSettingsFieldMapper.php`
|
|
- [ ] Registrar en `getComponents()` del AdminDashboardRenderer
|
|
- [ ] Registrar FieldMapper en FieldMapperRegistry
|
|
|
|
### 2.5 Integración Frontend
|
|
- [ ] Modificar `FooterRenderer.php`
|
|
- Agregar script de reCAPTCHA con site key
|
|
- Modificar form para incluir token hidden
|
|
- [ ] Modificar `ContactFormRenderer.php`
|
|
- Agregar script de reCAPTCHA con site key
|
|
- Modificar form para incluir token hidden
|
|
- [ ] Crear JS compartido para ejecutar reCAPTCHA y obtener token
|
|
|
|
### 2.6 Integración Backend
|
|
- [ ] Modificar `NewsletterAjaxHandler.php`
|
|
- Inyectar RecaptchaValidationService
|
|
- Validar token antes de procesar
|
|
- Retornar error si score bajo
|
|
- [ ] Modificar `ContactFormAjaxHandler.php`
|
|
- Inyectar RecaptchaValidationService
|
|
- Validar token antes de procesar
|
|
- Retornar error si score bajo
|
|
|
|
### 2.7 Registro DI
|
|
- [ ] Modificar `functions.php`
|
|
- Registrar RecaptchaValidatorInterface → GoogleRecaptchaValidator
|
|
- Registrar RecaptchaValidationService
|
|
|
|
## Fase 3: Integración y Validación
|
|
|
|
### 3.1 Testing Manual
|
|
- [ ] Probar Newsletter con reCAPTCHA habilitado
|
|
- [ ] Probar Contact Form con reCAPTCHA habilitado
|
|
- [ ] Probar con reCAPTCHA deshabilitado (fallback)
|
|
- [ ] Probar cambio de threshold desde admin
|
|
- [ ] Verificar logging de intentos
|
|
|
|
### 3.2 Validación de Arquitectura
|
|
- [ ] Ejecutar `validate-architecture.php recaptcha-settings`
|
|
- [ ] Verificar cumplimiento Clean Architecture
|
|
- [ ] Verificar inyección de dependencias correcta
|
|
|
|
### 3.3 Documentación
|
|
- [ ] Actualizar CLAUDE.md si es necesario
|
|
- [ ] Documentar configuración en admin
|
|
|
|
## Dependencias
|
|
|
|
| Tarea | Depende de |
|
|
|-------|------------|
|
|
| Application Service | Domain Contract |
|
|
| Infrastructure Service | Domain Contract |
|
|
| Admin FormBuilder | Schema JSON sincronizado |
|
|
| Frontend integration | Site Key configurado |
|
|
| Backend integration | Application Service + Infrastructure |
|
|
|
|
## Estimación de Archivos
|
|
|
|
| Tipo | Cantidad |
|
|
|------|----------|
|
|
| Nuevos | 7 |
|
|
| Modificados | 7 |
|
|
| Total | 14 |
|
|
|
|
### Archivos Nuevos
|
|
1. `Shared/Domain/Contracts/RecaptchaValidatorInterface.php`
|
|
2. `Shared/Domain/Entities/RecaptchaResult.php`
|
|
3. `Shared/Application/Services/RecaptchaValidationService.php`
|
|
4. `Shared/Infrastructure/Services/GoogleRecaptchaValidator.php`
|
|
5. `Schemas/recaptcha-settings.json`
|
|
6. `Admin/RecaptchaSettings/Infrastructure/Ui/RecaptchaSettingsFormBuilder.php`
|
|
7. `Admin/RecaptchaSettings/Infrastructure/FieldMapping/RecaptchaSettingsFieldMapper.php`
|
|
|
|
### Archivos a Modificar
|
|
1. `Public/Footer/Infrastructure/Api/WordPress/NewsletterAjaxHandler.php`
|
|
2. `Public/ContactForm/Infrastructure/Api/WordPress/ContactFormAjaxHandler.php`
|
|
3. `Public/Footer/Infrastructure/Ui/FooterRenderer.php`
|
|
4. `Public/ContactForm/Infrastructure/Ui/ContactFormRenderer.php`
|
|
5. `functions.php`
|
|
6. `Admin/Infrastructure/Ui/AdminDashboardRenderer.php`
|
|
7. `Admin/Shared/Infrastructure/FieldMapping/FieldMapperRegistry.php`
|
|
|
|
## Última actualización
|
|
|
|
2025-01-08
|