diff --git a/app/db/crud.py b/app/db/crud.py index af71d07..e9a5e1b 100644 --- a/app/db/crud.py +++ b/app/db/crud.py @@ -470,6 +470,7 @@ def reset_user_data_usage(db: Session, dbuser: User): def revoke_user_sub(db: Session, dbuser: User): dbuser.key = secrets.token_hex(16) + dbuser.sub_revoked_at = datetime.utcnow() db.commit() db.refresh(dbuser) return dbuser diff --git a/app/db/migrations/versions/1992c49c5990_add_sub_revoked_at.py b/app/db/migrations/versions/1992c49c5990_add_sub_revoked_at.py new file mode 100644 index 0000000..abb1e91 --- /dev/null +++ b/app/db/migrations/versions/1992c49c5990_add_sub_revoked_at.py @@ -0,0 +1,32 @@ +"""add sub_revoked_at to users table + +Revision ID: 1992c49c5990 +Revises: fd423c19f682 +Create Date: 2024-10-09 05:24:52.450988 + +""" + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = "1992c49c5990" +down_revision = "fd423c19f682" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "users", + sa.Column("sub_revoked_at", sa.DateTime()), + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column("users", "sub_revoked_at") + # ### end Alembic commands ### diff --git a/app/db/models.py b/app/db/models.py index 99742bf..d3ef5b1 100644 --- a/app/db/models.py +++ b/app/db/models.py @@ -206,6 +206,7 @@ class User(Base): admin = relationship("Admin", back_populates="users") sub_updated_at = Column(DateTime) sub_last_user_agent = Column(String(512)) + sub_revoked_at = Column(DateTime) created_at = Column(DateTime, default=datetime.utcnow) note = Column(String(500)) online_at = Column(DateTime) diff --git a/app/models/user.py b/app/models/user.py index af20174..ec1899a 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -123,6 +123,7 @@ class UserResponse(User): enabled: bool used_traffic: int lifetime_used_traffic: int + sub_revoked_at: datetime | None created_at: datetime service_ids: list[int] subscription_url: str