This commit is contained in:
Андрей Дувакин 2024-10-05 09:37:09 +05:00
parent 5fb7b84012
commit 293a173b30
2 changed files with 13 additions and 14 deletions

View File

@ -1,12 +1,12 @@
from datetime import datetime, timedelta, timezone
from datetime import datetime, timezone, timedelta
from typing import Optional
from fastapi import Depends, HTTPException
from fastapi.security import OAuth2PasswordBearer
import jwt
from sqlalchemy.orm import Session
from dotenv import load_dotenv
import os
from app.infrastructure.database.dependencies import get_db
from app.infrastructure.database.repository.user_repository import UsersRepository
@ -21,15 +21,13 @@ oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
def create_access_token(data: dict, expires_delta: Optional[timedelta] = None):
to_encode = data.copy()
if expires_delta:
expire = datetime.now(timezone.utc) + expires_delta
else:
expire = datetime.now(timezone.utc) + timedelta(minutes=15)
expire = datetime.now(timezone.utc) + (expires_delta if expires_delta else timedelta(minutes=15))
to_encode.update({"exp": expire})
return jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
def verify_token(token: str, db: Session = Depends(get_db)):
# Зависимость для проверки токена
def verify_token(token: str = Depends(oauth2_scheme), db: Session = Depends(get_db)):
credentials_exception = HTTPException(
status_code=401,
detail="Could not validate credentials",
@ -42,9 +40,7 @@ def verify_token(token: str, db: Session = Depends(get_db)):
raise credentials_exception
user_repo = UsersRepository(db)
user = user_repo.get_by_id(
int(user_id)
)
user = user_repo.get_by_id(int(user_id))
if user is None:
raise credentials_exception
return user

View File

@ -3,19 +3,19 @@ from typing import List
from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session
from app.core.usecases.auth_service import verify_token
from app.infrastructure.database.dependencies import get_db
from app.core.entities.accessory import AccessoryEntity
from app.core.usecases.accessory_service import AccessoriesService
from app.infrastructure.database.models.users import User
from app.infrastructure.database.dependencies import get_db
router = APIRouter()
@router.get("/accessories", response_model=List[AccessoryEntity])
def read_accessories(db: Session = Depends(get_db), current_user: User = Depends(verify_token)):
def read_accessories(db: Session = Depends(get_db)):
service = AccessoriesService(db)
return service.get_all_accessories()
@router.get("/accessories/{accessory_id}", response_model=AccessoryEntity)
def read_accessory(accessory_id: int, db: Session = Depends(get_db)):
service = AccessoriesService(db)
@ -24,11 +24,13 @@ def read_accessory(accessory_id: int, db: Session = Depends(get_db)):
raise HTTPException(status_code=404, detail="Accessory not found")
return accessory
@router.post("/accessories", response_model=AccessoryEntity)
def create_accessory(accessory: AccessoryEntity, db: Session = Depends(get_db)):
service = AccessoriesService(db)
return service.create_accessory(accessory)
@router.put("/accessories/{accessory_id}", response_model=AccessoryEntity)
def update_accessory(accessory_id: int, accessory: AccessoryEntity, db: Session = Depends(get_db)):
service = AccessoriesService(db)
@ -37,6 +39,7 @@ def update_accessory(accessory_id: int, accessory: AccessoryEntity, db: Session
raise HTTPException(status_code=404, detail="Accessory not found")
return updated_accessory
@router.delete("/accessories/{accessory_id}", response_model=bool)
def delete_accessory(accessory_id: int, db: Session = Depends(get_db)):
service = AccessoriesService(db)