Files
JQC_multi_tenant/migrations/versions/phase10_customer_password_setup.py
2026-06-26 09:04:34 -04:00

45 lines
1.4 KiB
Python

"""Phase 10: Customer password-setup workflow
Adds three columns to the users table to support the
invitation-based customer account creation flow:
password_set — False until the customer completes set-password
set_password_token — one-time URL token (64-char hex, nullable)
set_password_token_expires — UTC expiry datetime (nullable)
Revision ID: phase10_customer_password_setup
Revises: phase9_user_full_name
Create Date: 2026-04-02
"""
from alembic import op
import sqlalchemy as sa
revision = 'phase10_customer_password_setup'
down_revision = 'phase9_user_full_name'
branch_labels = None
depends_on = None
def upgrade():
bind = op.get_bind()
inspector = sa.inspect(bind)
columns = [c['name'] for c in inspector.get_columns('users')]
if 'password_set' not in columns:
op.add_column('users',
sa.Column('password_set', sa.Boolean, nullable=False, server_default='1'))
if 'set_password_token' not in columns:
op.add_column('users',
sa.Column('set_password_token', sa.String(64), nullable=True))
if 'set_password_token_expires' not in columns:
op.add_column('users',
sa.Column('set_password_token_expires', sa.DateTime, nullable=True))
def downgrade():
op.drop_column('users', 'set_password_token_expires')
op.drop_column('users', 'set_password_token')
op.drop_column('users', 'password_set')