diff --git a/backend/trip/alembic/versions/4fadf12fa98c_user_totp.py b/backend/trip/alembic/versions/4fadf12fa98c_user_totp.py new file mode 100644 index 0000000..16fbd28 --- /dev/null +++ b/backend/trip/alembic/versions/4fadf12fa98c_user_totp.py @@ -0,0 +1,32 @@ +"""User TOTP + +Revision ID: 4fadf12fa98c +Revises: 54aec61bc15d +Create Date: 2025-10-26 21:31:09.258777 + +""" + +import sqlalchemy as sa +import sqlmodel.sql.sqltypes +from alembic import op + +# revision identifiers, used by Alembic. +revision = "4fadf12fa98c" +down_revision = "54aec61bc15d" +branch_labels = None +depends_on = None + + +def upgrade(): + with op.batch_alter_table("user", schema=None) as batch_op: + batch_op.add_column(sa.Column("totp_enabled", sa.Boolean(), nullable=False, server_default="0")) + batch_op.add_column(sa.Column("totp_secret", sqlmodel.sql.sqltypes.AutoString(), nullable=True)) + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table("user", schema=None) as batch_op: + batch_op.drop_column("totp_secret") + batch_op.drop_column("totp_enabled") + + # ### end Alembic commands ### diff --git a/backend/trip/models/models.py b/backend/trip/models/models.py index c09906b..74506e1 100644 --- a/backend/trip/models/models.py +++ b/backend/trip/models/models.py @@ -173,6 +173,8 @@ class UserBase(SQLModel): class User(UserBase, table=True): username: str = Field(primary_key=True) password: str + totp_enabled: bool = False + totp_secret: str | None = None class UserUpdate(UserBase): @@ -185,6 +187,7 @@ class UserUpdate(UserBase): class UserRead(UserBase): username: str do_not_display: list[str] + totp_enabled: bool @classmethod def serialize(cls, obj: User) -> "UserRead": @@ -198,6 +201,7 @@ class UserRead(UserBase): mode_low_network=obj.mode_low_network, mode_dark=obj.mode_dark, mode_gpx_in_place=obj.mode_gpx_in_place, + totp_enabled=obj.totp_enabled, )