"""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) )