Exportación y borrado de cuenta
Configura inventario de privacidad, exportaciones autenticadas, borrado diferido, limpieza de proveedores, seudonimización y cancelación.
Sincronizado con el commit
e632762. Revisa este flujo y la retención con asesoría legal antes de producción.
El starter incluye pantallas localizadas en /[locale]/account/profile y /[locale]/account/privacy, con APIs autenticadas, workers durables y exportaciones privadas. El cliente puede editar su nombre, gestionar contraseña y MFA, revisar sesiones, exportar datos y programar o cancelar el borrado. Revisa la política y las confirmaciones antes de publicar.
Define la política antes de mostrar los botones
- Decide qué datos se eliminan, seudonimizan, conservan o quedan fuera de la exportación. El mapa incluido es un punto de partida técnico, no una conclusión legal.
- Revisa los siete días por defecto de gracia y retención, la sesión reciente de 15 minutos, el borrado del cliente Stripe y la retención del blocklist.
- Decide cómo transferir organizaciones compartidas y cómo elimina datos cada proveedor externo. El worker bloquea el borrado antes que fingir que esa obligación se completó.
Está listo para producción cuando: asesoría legal revisó política y textos; un usuario desechable abre su exportación; puede cancelar durante la gracia; los bloqueos explican el siguiente paso; y la ejecución final elimina o seudonimiza todo sin registrar URLs firmadas.
Inventario probado
src/config/account-data-policy.ts asigna a cada tabla: eliminar, seudonimizar, conservar o no personal, y si se exporta. Una prueba compara el inventario con src/db/schema.ts; añadir una tabla sin decisión de privacidad rompe el build.
Credenciales, hashes, sesiones, tokens y secretos TOTP nunca se exportan. Registros financieros, de auditoría, ledger y espacios compartidos pueden conservarse tras reemplazar identificadores.
Exportar
POST /api/account/data-export requiere autenticación, mismo origen, límite de frecuencia e Idempotency-Key. Devuelve 202 y encola el trabajo. Consulta GET /api/account/data-export.
Al terminar devuelve un manifiesto y enlaces firmados de cinco minutos. Los artefactos siguen privados y caducan a los siete días por defecto.
Borrar
POST /api/account/deletion exige además una sesión de menos de 15 minutos. El periodo de gracia predeterminado es siete días; se cancela con DELETE y se consulta con GET.
Se bloquea al último owner de una organización compartida o al último administrador con acceso completo. Tras la gracia, el worker revoca credenciales, cancela Stripe, elimina objetos del espacio personal, limpia registros eliminables y seudonimiza finanzas, reservas, créditos y auditoría conservados.
src/config/account-lifecycle.ts controla gracia, retención, sesión fresca, eliminación del cliente Stripe, blocklist y duración de URLs. Son valores técnicos, no asesoría legal.
Mantén almacenamiento privado y cron activos, implementa hooks para todo proveedor nuevo, actualiza la política al crear tablas y prueba todo el flujo con una cuenta desechable. No registres payloads ni URLs firmadas.
Para llevarlo a producción: apoya exportación y borrado en Trabajos duraderos y readiness y valida el conjunto con Despliegue y seguridad.
Controles y estado de exportación
El borrado exige escribir el correo y enlaza los bloqueos de propiedad a los ajustes del equipo. La última exportación se recupera al recargar. Consulta metadatos con GET /api/account/data-export; pide GET /api/account/data-export/{requestUuid} explícitamente para generar enlaces temporales. La consulta usa un límite separado. El worker guarda puntos de control y continúa por lotes sin consumir reintentos de fallo por progreso normal.
Analítica y consentimiento
Decide si habilitar Google Analytics o AdSense, configura el consentimiento, actualiza las declaraciones legales y verifica que nada cargue antes de tiempo.
Copias, retención y simulacros de restauración
Crea dumps PostgreSQL verificables, restaura solo en bases temporales protegidas y aplica retención explícita.