# Datandes Abogados CMS

Panel central en PHP + MySQL para administrar sitios de abogados por niveles (1, 2, 3), editar contenido con WYSIWYG, publicar blog y desplegar por FTP desde una sola interfaz.

## Qué resuelve

- Roles:
  - `admin`: ve todos los sitios, crea sitios, crea usuarios, asigna accesos y despliega por FTP.
  - `editor`: solo ve y edita contenido/blog de los sitios asignados.
- Alta de sitios con:
  - nivel,
  - info comercial,
  - datos FTP.
- Selección de planilla basada en los archivos existentes en:
  - `propuesta/Nivel-1/modelostipo`
  - `propuesta/nivel-2/diseños`
  - `propuesta/nivel-3/funcional`
- Módulos funcionales:
  - páginas editables,
  - blog funcional (borrador/publicado),
  - formulario de contacto funcional en el sitio desplegado.
- Build + Deploy FTP:
  - genera sitio final optimizado,
  - sube de forma recursiva al hosting.
- Preview en vivo antes de deploy:
  - publica una copia local del build en `public/previews/site-{id}`.
- Seguridad:
  - 2FA TOTP compatible con Google Authenticator.

## Estructura principal

- `config/config.php`: configuración general.
- `db/schema.sql`: esquema de base de datos.
- `public/`: panel web.
- `src/`: lógica de negocio (auth, sitios, build, FTP, etc.).
- `scripts/seed_admin.php`: creación de admin inicial.
- `scripts/optimize_templates.php`: optimiza planillas existentes y genera reporte.

## Instalación rápida

1. Abrir `public/install.php` y completar el asistente web.
2. El instalador:
   - crea DB/tablas,
   - genera admin inicial,
   - escribe `config/config.php`.
3. (Opcional por CLI) crear admin adicional:

```bash
php scripts/seed_admin.php "Tu Nombre" "admin@tudominio.cl" "TuPasswordSegura123!"
```

4. Publicar carpeta `public/` en tu servidor PHP (o apuntar virtual host).
5. Iniciar sesión en `public/login.php`.

## Flujo de uso

1. Admin crea sitio (`Nuevo Sitio`):
   - nivel + planilla + branding + FTP + tipo de dominio (`subdominio datandes.cl` o `dominio propio`).
2. Admin edita ajustes generales o asigna usuarios al sitio.
3. Editor/Admin actualiza páginas y blog (WYSIWYG).
4. Admin ejecuta:
   - `Generar build`
   - `Publicar preview`
   - `Desplegar ahora` (FTP)

## 2FA Google Authenticator

- Cada usuario puede activar 2FA en `Seguridad`.
- Flujo:
  1. Generar clave secreta.
  2. Escanear QR local (o cargar clave manual) en Google Authenticator.
  3. Confirmar código de 6 dígitos.
- Desde ese momento, al iniciar sesión se solicitará código 2FA.

## Optimización de planillas existentes

Para generar copias optimizadas de las planillas actuales:

```bash
php scripts/optimize_templates.php
```

Salida:

- `propuesta/plantillas-optimizadas/`
- `propuesta/plantillas-optimizadas/REPORTE-OPTIMIZACION.md`

## Recomendaciones para producción

- Forzar HTTPS.
- Limitar acceso al panel por IP/VPN o 2FA.
- Mover `config/config.php` fuera de `public`.
- Cambiar `ftp_secret_key` por clave larga única.
- Activar backups automáticos de DB y builds.
- Agregar cola para deploys y logs persistentes.

## Migrar instalación existente

Si ya tenías una base anterior del CMS, ejecuta:

```bash
php scripts/migrate.php
```

Esto agrega columnas nuevas para:
- tipo de dominio por sitio,
- 2FA de usuarios.
