backend
This commit is contained in:
commit
d7666f7b2c
44 changed files with 2246 additions and 0 deletions
35
backend/dependencies.py
Normal file
35
backend/dependencies.py
Normal file
|
@ -0,0 +1,35 @@
|
|||
from fastapi import Depends, HTTPException, status
|
||||
from fastapi.security import OAuth2PasswordBearer
|
||||
from jose import JWTError, jwt
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from core.config import settings
|
||||
from core.database import get_db
|
||||
from crud import user as crud_user
|
||||
from schemas import user as schemas_user # Pour la validation du modèle de l'utilisateur
|
||||
|
||||
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="auth/login") # URL où le client peut obtenir un token
|
||||
|
||||
async def get_current_user(
|
||||
token: str = Depends(oauth2_scheme),
|
||||
db: Session = Depends(get_db)
|
||||
):
|
||||
credentials_exception = HTTPException(
|
||||
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||
detail="Impossible de valider les identifiants",
|
||||
headers={"WWW-Authenticate": "Bearer"},
|
||||
)
|
||||
try:
|
||||
payload = jwt.decode(token, settings.SECRET_KEY, algorithms=[settings.ALGORITHM])
|
||||
username: str = payload.get("sub")
|
||||
if username is None:
|
||||
raise credentials_exception
|
||||
except JWTError:
|
||||
raise credentials_exception
|
||||
|
||||
user = crud_user.get_user_by_email(db, email=username)
|
||||
if user is None:
|
||||
raise credentials_exception
|
||||
|
||||
# Retourne l'utilisateur sous forme de Pydantic model pour la réponse
|
||||
return schemas_user.UserResponse.model_validate(user)
|
Loading…
Add table
Add a link
Reference in a new issue