feat(users): add user administration and password management

This commit is contained in:
Schubert Ferenc 2026-07-11 14:04:30 +02:00
parent 47f54d3461
commit b584e60273
16 changed files with 720 additions and 22 deletions

View file

@ -0,0 +1,36 @@
from __future__ import annotations
from alembic import op
import sqlalchemy as sa
revision = "202607110004"
down_revision = "202607110003"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column("users", sa.Column("first_name", sa.String(length=80), nullable=True))
op.add_column("users", sa.Column("last_name", sa.String(length=80), nullable=True))
op.add_column("users", sa.Column("must_change_password", sa.Boolean(), nullable=False, server_default=sa.true()))
op.add_column("users", sa.Column("last_login_at", sa.DateTime(timezone=True), nullable=True))
op.add_column("users", sa.Column("password_changed_at", sa.DateTime(timezone=True), nullable=True))
op.execute(
sa.text(
"UPDATE users SET first_name = COALESCE(first_name, split_part(full_name, ' ', 1)), "
"last_name = COALESCE(last_name, NULLIF(substr(full_name, length(split_part(full_name, ' ', 1)) + 2), ''))"
)
)
op.execute(sa.text("UPDATE users SET first_name = COALESCE(first_name, 'Validation'), last_name = COALESCE(last_name, 'Admin')"))
op.alter_column("users", "first_name", nullable=False)
op.alter_column("users", "last_name", nullable=False)
op.alter_column("users", "must_change_password", server_default=None)
def downgrade() -> None:
op.drop_column("users", "password_changed_at")
op.drop_column("users", "last_login_at")
op.drop_column("users", "must_change_password")
op.drop_column("users", "last_name")
op.drop_column("users", "first_name")