Изменил способ авторизации
This commit is contained in:
parent
115a9450de
commit
283dfc8c68
2 changed files with 9 additions and 10 deletions
|
@ -1,4 +1,5 @@
|
||||||
from fastapi import Depends, Request, Response, WebSocket
|
from fastapi import Depends, WebSocket
|
||||||
|
from fastapi.security import HTTPBearer
|
||||||
from jose import JWTError, jwt, ExpiredSignatureError
|
from jose import JWTError, jwt, ExpiredSignatureError
|
||||||
|
|
||||||
from app.config import settings
|
from app.config import settings
|
||||||
|
@ -11,18 +12,19 @@ from app.exceptions import (
|
||||||
)
|
)
|
||||||
from app.services.user_service import UserService
|
from app.services.user_service import UserService
|
||||||
from app.unit_of_work import UnitOfWork
|
from app.unit_of_work import UnitOfWork
|
||||||
from app.users.auth import create_access_token, VERIFICATED_USER
|
from app.users.auth import VERIFICATED_USER
|
||||||
from app.users.schemas import SUser
|
from app.users.schemas import SUser
|
||||||
|
|
||||||
|
auth_schema = HTTPBearer()
|
||||||
|
|
||||||
def get_token(request: Request) -> str:
|
|
||||||
token = request.cookies.get("black_phoenix_access_token")
|
def get_token(token=Depends(auth_schema)) -> str:
|
||||||
if not token:
|
if not token:
|
||||||
raise TokenAbsentException
|
raise TokenAbsentException
|
||||||
return token
|
return token.credentials
|
||||||
|
|
||||||
|
|
||||||
async def get_current_user(response: Response, token: str = Depends(get_token), uow=Depends(UnitOfWork)) -> SUser:
|
async def get_current_user(token: str = Depends(get_token), uow=Depends(UnitOfWork)) -> SUser:
|
||||||
try:
|
try:
|
||||||
payload = jwt.decode(token, settings.SECRET_KEY, settings.ALGORITHM)
|
payload = jwt.decode(token, settings.SECRET_KEY, settings.ALGORITHM)
|
||||||
except ExpiredSignatureError:
|
except ExpiredSignatureError:
|
||||||
|
@ -38,8 +40,6 @@ async def get_current_user(response: Response, token: str = Depends(get_token),
|
||||||
if not user:
|
if not user:
|
||||||
raise UserIsNotPresentException
|
raise UserIsNotPresentException
|
||||||
|
|
||||||
access_token = create_access_token({"sub": str(user.id)})
|
|
||||||
response.set_cookie(key="black_phoenix_access_token", value=access_token, httponly=True, secure=True, samesite="none")
|
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -131,8 +131,7 @@ async def email_verification(user_code: str, uow=Depends(UnitOfWork)):
|
||||||
async def login_user(response: Response, user_data: SUserLogin, uow=Depends(UnitOfWork)):
|
async def login_user(response: Response, user_data: SUserLogin, uow=Depends(UnitOfWork)):
|
||||||
user = await AuthService.authenticate_user(uow, user_data.email_or_username, user_data.password)
|
user = await AuthService.authenticate_user(uow, user_data.email_or_username, user_data.password)
|
||||||
access_token = create_access_token({"sub": str(user.id)})
|
access_token = create_access_token({"sub": str(user.id)})
|
||||||
response.set_cookie("black_phoenix_access_token", access_token, httponly=True, secure=True, samesite="none")
|
response.headers["Authorization"] = f"Bearer {access_token}"
|
||||||
return {"access_token": access_token}
|
|
||||||
|
|
||||||
|
|
||||||
@router.post(
|
@router.post(
|
||||||
|
|
Loading…
Add table
Reference in a new issue