🎨 Update models to integrate TOTP

This commit is contained in:
itskovacs 2025-10-28 18:14:28 +01:00
parent 084ce90f43
commit ed39da36c0
2 changed files with 36 additions and 0 deletions

View File

@ -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 ###

View File

@ -173,6 +173,8 @@ class UserBase(SQLModel):
class User(UserBase, table=True): class User(UserBase, table=True):
username: str = Field(primary_key=True) username: str = Field(primary_key=True)
password: str password: str
totp_enabled: bool = False
totp_secret: str | None = None
class UserUpdate(UserBase): class UserUpdate(UserBase):
@ -185,6 +187,7 @@ class UserUpdate(UserBase):
class UserRead(UserBase): class UserRead(UserBase):
username: str username: str
do_not_display: list[str] do_not_display: list[str]
totp_enabled: bool
@classmethod @classmethod
def serialize(cls, obj: User) -> "UserRead": def serialize(cls, obj: User) -> "UserRead":
@ -198,6 +201,7 @@ class UserRead(UserBase):
mode_low_network=obj.mode_low_network, mode_low_network=obj.mode_low_network,
mode_dark=obj.mode_dark, mode_dark=obj.mode_dark,
mode_gpx_in_place=obj.mode_gpx_in_place, mode_gpx_in_place=obj.mode_gpx_in_place,
totp_enabled=obj.totp_enabled,
) )