🎨 Update models to integrate TOTP
This commit is contained in:
parent
084ce90f43
commit
ed39da36c0
32
backend/trip/alembic/versions/4fadf12fa98c_user_totp.py
Normal file
32
backend/trip/alembic/versions/4fadf12fa98c_user_totp.py
Normal 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 ###
|
||||||
@ -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,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user