53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy import Column, String, Boolean
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
|
|
Base = declarative_base()
|
|
router = APIRouter()
|
|
|
|
class UserSession(Base):
|
|
__tablename__ = "user_sessions"
|
|
|
|
id = Column(String, primary_key=True)
|
|
token = Column(String)
|
|
is_active = Column(Boolean, default=True)
|
|
|
|
@router.post("/logout")
|
|
async def logout_demo(
|
|
token: str = "dummy_jwt_token_123"
|
|
):
|
|
"""Demo logout endpoint"""
|
|
if not token:
|
|
raise HTTPException(status_code=400, detail="Invalid token")
|
|
|
|
return {
|
|
"message": "Logout successful",
|
|
"token": token,
|
|
"features": {
|
|
"cleared_sessions": True,
|
|
"status": "logged_out"
|
|
}
|
|
}
|
|
|
|
# migrations/versions/001_create_user_sessions.py
|
|
"""create user sessions table
|
|
|
|
Revision ID: 001
|
|
Revises:
|
|
Create Date: 2024-01-10
|
|
|
|
"""
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
def upgrade():
|
|
op.create_table(
|
|
'user_sessions',
|
|
sa.Column('id', sa.String(), nullable=False),
|
|
sa.Column('token', sa.String(), nullable=False),
|
|
sa.Column('is_active', sa.Boolean(), nullable=False),
|
|
sa.PrimaryKeyConstraint('id')
|
|
)
|
|
|
|
def downgrade():
|
|
op.drop_table('user_sessions') |