summaryrefslogtreecommitdiff
path: root/app/routes/auth.py
diff options
context:
space:
mode:
authorl3wdfut4pwr <l3wdfut4pwr@gmail.com>2026-04-02 08:39:42 +0300
committerl3wdfut4pwr <l3wdfut4pwr@gmail.com>2026-04-02 08:39:42 +0300
commit69e67d049411ceb5c839386b020ce2c77ffc2847 (patch)
tree9ec561545b64b57796ef2fd5f3fbd02239965cc1 /app/routes/auth.py
parent7e41576035cd9f0004255a7490e6691c6d989ff6 (diff)
minor improvements
Diffstat (limited to 'app/routes/auth.py')
-rw-r--r--app/routes/auth.py37
1 files changed, 26 insertions, 11 deletions
diff --git a/app/routes/auth.py b/app/routes/auth.py
index aa68c52..a2de6db 100644
--- a/app/routes/auth.py
+++ b/app/routes/auth.py
@@ -1,19 +1,19 @@
-from fastapi import APIRouter, Depends, HTTPException
+from fastapi import APIRouter, Depends, HTTPException, Response
from fastapi.security import OAuth2PasswordRequestForm
from sqlalchemy.ext.asyncio import AsyncSession
-from app.utils.logger_cfg import logger
-
from app.auth.jwt import create_access_token, create_refresh_token
from app.models.user import User
from app.utils.db import get_async_session
from app.utils.hash_cfg import verify_password
+from app.utils.logger_cfg import logger
router = APIRouter(tags=["auth"])
@router.post("/login")
async def login(
+ response: Response,
form_data: OAuth2PasswordRequestForm = Depends(),
session: AsyncSession = Depends(get_async_session),
):
@@ -25,13 +25,28 @@ async def login(
logger.warning("Login failed | username/email={}", form_data.username)
raise HTTPException(status_code=401, detail="Invalid credentials")
- access_token = create_access_token({"sub": str(user.id)})
- refresh_token = create_refresh_token({"sub": str(user.id)})
+ access_token = create_access_token(
+ {"sub": str(user.id), "token_version": user.token_version}
+ )
+ refresh_token = create_refresh_token(
+ {"sub": str(user.id), "token_version": user.token_version}
+ )
+ response.set_cookie(
+ key="access_token",
+ value=access_token,
+ httponly=True,
+ secure=False,
+ samesite="lax",
+ max_age=60 * 60,
+ )
+ response.set_cookie(
+ key="refresh_token",
+ value=refresh_token,
+ httponly=True,
+ secure=True,
+ samesite="lax",
+ max_age=30 * 24 * 60 * 60,
+ )
logger.info("User logged in | id={} username={}", user.id, user.username)
-
- return {
- "access_token": access_token,
- "refresh_token": refresh_token,
- "token_type": "bearer",
- }
+ return {"message": "Logged in successfully"}