0040_user_delete_secret.sql 1.0 KB

1234567891011121314151617
  1. -- 0040_user_delete_secret — store a user-chosen "delete secret" that gates
  2. -- project deletion. Mirrors the SDK-key pattern (0034 + 0039):
  3. --
  4. -- * delete_secret_hash — sha-256 hex digest, the ONLY verification
  5. -- mechanism (leaking it leaks zero usable secrets).
  6. -- * delete_secret_enc — AES-256-GCM ciphertext of the plaintext,
  7. -- encrypted at rest with the same BRIVEN_ENCRYPTION_KEY KEK that
  8. -- protects customer env vars (services/project-env.ts). Exists solely
  9. -- so the owner can reveal/copy the secret again through the
  10. -- authenticated + audited reveal path; never used for verification.
  11. -- * delete_secret_set_at — when the current secret was set.
  12. --
  13. -- All three NULLABLE: a user who has never set a secret has all three null.
  14. -- IF NOT EXISTS keeps this safe if a partial run ever happened.
  15. ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "delete_secret_hash" text;
  16. ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "delete_secret_enc" text;
  17. ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "delete_secret_set_at" timestamptz;