July 4 - Implement TOTP 2FA
This commit is contained in:
@@ -64,7 +64,8 @@ tenant_domains
|
||||
tls_status ENUM(pending, active, failed), created_at
|
||||
|
||||
superadmins -- cross-tenant accounts, control-plane only
|
||||
id, username, email, password_hash, active, created_at
|
||||
id, username, email, password_hash, active, created_at,
|
||||
mfa_enabled, mfa_secret, mfa_recovery_codes -- control0005: opt-in TOTP 2FA
|
||||
|
||||
provisioning_jobs
|
||||
id, tenant_id (FK), action ENUM(create_db, migrate, seed, suspend, delete),
|
||||
@@ -115,7 +116,7 @@ db = SQLAlchemy(session_options={'class_': RoutingSession})
|
||||
Two independent Alembic chains:
|
||||
|
||||
1. **Tenant schema** — existing chain (HEAD: **`phase34_inspection_schedules`**). Runs per-tenant DB. New tenant features continue as `phase35_…` per existing naming.
|
||||
2. **Control schema** — chain `control{N}_…`, runs once against `jqc_control`. HEAD: `control0004_dunning_tracking` (`control0001_init → control0002_billing → control0003_trial_reminder_sent → control0004_dunning_tracking`).
|
||||
2. **Control schema** — chain `control{N}_…`, runs once against `jqc_control`. HEAD: `control0005_superadmin_mfa` (`control0001_init → control0002_billing → control0003_trial_reminder_sent → control0004_dunning_tracking → control0005_superadmin_mfa`).
|
||||
|
||||
**CLI (always source env first):**
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user