Documenta el fix de 1bfb3fb en la sección "Patrones de código" para
que futuros contribuyentes no escriban a $_SESSION sin llamar
startSession(true), lo cual perdería el write en silencio.
- Todos los strings de branding actualizados:
- "AALN" / "AALN Law" → "AAL"
- "Arias, Abrego, López & Noriega" → "Arias, Abrego & López"
- "M. Noriega" (placeholder en sample card del landing) → "M. Arias"
- Website link cambia de aalnlaw.com a aal-law.com en landing
y footer del portal
- Filenames de exportación a Excel/PDF: *_AALN → *_AAL
- Footer del PDF compartido (DonnaExport.toPDF) actualizado
- Mensajes de denegación de OAuth callback actualizados
- README refleja nuevo nombre y URL del firm
OAuth sigue aceptando @aal-law.com y @aalnlaw.com como dominios
válidos (configurado en /etc/donna/donna.env) para no romper logins
durante la transición de correos.
Bug: el script previo solo respaldaba la BD donna. /etc/donna/donna.env,
/etc/caddy/Caddyfile y los systemd units quedaban sin respaldo. Además,
si mariadb-dump fallaba a media corrida el .sql.gz parcial quedaba
como si fuera válido (se vio hoy con un archivo de 20 bytes).
Cambios:
- Output ahora es un solo tar.gz con DB + GRANTs + configs + MANIFEST
(sha256 de cada archivo incluido)
- Atómico: tar se escribe a .tmp y se renombra solo al final
- Incluye SHOW GRANTS para poder recrear el usuario donna_app en un
server nuevo sin tener que conocer el password de root del MariaDB
- Limpieza de archivos .sql.gz legacy también en la retención
- README documenta el procedimiento de restore en server nuevo
- 5 apps live (escrituras, tramites, calendario, horas, admin)
con descripción de cada una
- 4 roles (admin, socio, abogado, usuario) y matriz de permisos
- Patrón Bootstrap::inject + window.DONNA
- AuditLog y canView() documentados
- FK user_id en hours/obs
- Módulo compartido DonnaExport (Excel + PDF) con API JS
- Eventos de hoy en home
- 14 migraciones SQL listadas en orden
- Setup en server nuevo con aplicación batch de migraciones
- Guía "agregar una app nueva" actualizada
Setup completo del portal interno donna.aal-law.com:
* Landing público con OAuth login + grid de apps autenticado
* Flujo OAuth2 contra Mailcow (mail.aal-law.com)
* Sesiones SSO compartidas en el dominio (cookie donna_session, 8h)
* Whitelist de dominios aal-law.com / aalnlaw.com
* App "Control de Escrituras" migrada desde ZH-Consultores/control-escrituras
(mismo schema, mismo frontend, ahora con shared Auth/Db/Config libs)
* Migraciones SQL para users, escrituras_tramites, escrituras_historial
* Caddy on :80 con rewrite extless → .php
* Backup diario MariaDB (systemd timer + script) con retención 14d
* Documentación de arquitectura en README + infra files en docs/infra