Skip to content

Commit 705e228

Browse files
committed
feat: delete user session when user logout
1 parent 96d83fa commit 705e228

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

api/v1/routes/auth.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
UserData2,
3535
)
3636
from api.v1.schemas.token import TokenRequest
37-
# from api.v1.schemas.session import SessionCreate
3837
from api.v1.schemas.user import (MagicLinkRequest,
3938
ChangePasswordSchema,
4039
AuthMeResponse)
@@ -53,7 +52,7 @@
5352
)
5453
from api.v1.services.totp import totp_service
5554
from api.utils.settings import settings
56-
# from api.v1.services.session import SessionService
55+
from api.v1.services.session import SessionService
5756

5857
auth = APIRouter(prefix="/auth", tags=["Authentication"])
5958

@@ -307,6 +306,11 @@ def logout(
307306
):
308307
"""Endpoint to log a user out of their account"""
309308

309+
# logout/delete current user session
310+
current_refresh_token = request.cookies.get("refresh_token")
311+
SessionService.logout_session(db, current_user.id, current_refresh_token)
312+
313+
310314
response = success_response(status_code=200, message="User logged put successfully")
311315

312316
# Delete refresh token from cookies

api/v1/services/session.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,16 @@ def __init__(self, db: Session):
1313
"""Initialize the service."""
1414
self.db = db
1515

16+
@staticmethod
17+
def logout_session(db: Session, user_id: str, refresh_token: str):
18+
"""Logout a session."""
19+
session = db.query(UserSession).filter(
20+
UserSession.refresh_token == refresh_token, UserSession.user_id == user_id).first()
21+
if not session:
22+
return
23+
db.delete(session)
24+
db.commit()
25+
1626
def is_revoked_or_expired(self, refresh_token: str):
1727
"""Check if a session (refresh token) is revoked."""
1828
session = self.db.query(UserSession).filter(UserSession.refresh_token == refresh_token).first()

0 commit comments

Comments
 (0)