Files
model-platform/migrations/versions/9a1b2c3d4e5f_enable_demo_password_login.py
T

58 lines
1.4 KiB
Python

"""enable password login for the seeded development users
Revision ID: 9a1b2c3d4e5f
Revises: b71c4f2a9d10
Create Date: 2026-08-03 16:00:00
"""
from collections.abc import Sequence
import os
from alembic import op
import sqlalchemy as sa
from common.auth.passwords import hash_password
revision: str = "9a1b2c3d4e5f"
down_revision: str | Sequence[str] | None = "b71c4f2a9d10"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None
SEEDED_USER_IDS = (
"0000000000RF6FG1SDBXG59S13",
"0000000000H2QYCGPCWQM1JSGS",
"0000000000RWG40ESZPGJT629J",
"00000000004CQV7WASJA6N6FW4",
)
DISABLED_PASSWORD = "demo-login-disabled"
def upgrade() -> None:
password = os.environ.get("INITIAL_ADMIN_PASSWORD", "admin12345")
users = sa.table(
"users",
sa.column("user_id", sa.String),
sa.column("password_hash", sa.String),
)
op.execute(
users.update()
.where(users.c.user_id.in_(SEEDED_USER_IDS))
.where(users.c.password_hash == DISABLED_PASSWORD)
.values(password_hash=hash_password(password))
)
def downgrade() -> None:
users = sa.table(
"users",
sa.column("user_id", sa.String),
sa.column("password_hash", sa.String),
)
op.execute(
users.update()
.where(users.c.user_id.in_(SEEDED_USER_IDS))
.values(password_hash=DISABLED_PASSWORD)
)