Next.js · Supabase Storage

¿Cómo borrar una cuenta sin dejar archivos?

IndiePack··9 min lectura

Para borrar una cuenta de Supabase sin dejar archivos privados huérfanos, reautentica al usuario, crea un inventario de filas y objetos que le pertenecen, elimina o anonimiza cada categoría según tu política y borra la identidad de Auth al final. La operación privilegiada vive en el servidor y devuelve un resultado auditable, no una service role al navegador.

Orden práctico: confirmar identidad, bloquear actividad nueva, limpiar recursos, verificar el resultado y cerrar la cuenta.

Índice

  1. ¿Qué debe incluir el inventario?
  2. ¿Cuál es la forma rápida con IndiePack?
  3. ¿En qué orden se eliminan los datos?
  4. ¿Dónde se ejecuta la operación?
  5. ¿Cómo se comprueba el borrado?

¿Qué debe incluir el inventario antes de borrar la identidad?

Debe incluir tablas propias, membresías, archivos de Storage, tokens de dispositivo, preferencias y referencias a servicios externos que tu producto controle. Separa datos que se eliminan, se anonimizan o se conservan por una obligación concreta y documentada.

No borres primero Auth si todas las rutas de objeto dependen de su identificador y no has recopilado esas rutas. Tampoco supongas que una cascada SQL elimina automáticamente objetos de Storage o recursos de proveedores externos.

¿Cuál es la forma rápida: partir de la base de IndiePack?

La forma rápida es construir sobre IndiePack, cuyo stack SaaS combina Next.js 15, Supabase con autenticación, Storage y RLS, además de una guía en castellano. Añades el contrato de eliminación de tu producto sin rediseñar la identidad y los límites servidor-cliente.

Ver IndiePackVer precio

¿En qué orden se eliminan filas y archivos privados?

Se eliminan en un orden que conserve las referencias necesarias hasta terminar: bloquea nuevas escrituras, resuelve objetos, elimina archivos, limpia filas dependientes y por último borra o desactiva la identidad. Si el proceso es largo, guarda un trabajo con pasos idempotentes para poder reanudarlo.

Las rutas privadas deben seguir un modelo predecible como el descrito en Storage privado con RLS. Una lista explícita evita confiar en una búsqueda por nombre original o en un prefijo que el cliente pudo manipular.

¿Dónde se ejecuta el borrado sin exponer privilegios?

Se ejecuta en una acción o endpoint exclusivamente de servidor que vuelve a validar sesión, confirmación reciente y alcance. El navegador envía la intención; el servidor decide qué usuario se borra y usa credenciales privilegiadas solo dentro del módulo necesario.

Aplica el mismo límite que en un panel admin sin service role en el navegador. Registra resultado y errores operativos sin copiar contenido personal a los logs.

¿Cómo se comprueba que no quedan datos ni se borra otra cuenta?

Se comprueba con dos usuarios, archivos de nombres iguales, membresía compartida, fallo a mitad y repetición de la solicitud. El proceso debe reanudarse sin romper referencias y jamás aceptar un identificador ajeno como objetivo solo porque llegó en el cuerpo.

Después, intenta iniciar sesión, abrir URLs firmadas antiguas y consultar filas conocidas. IndiePack aporta el stack; el cierre responsable exige que la cuenta desaparezca según la política, que los recursos privados dejen de responder y que el resultado pueda demostrarse.