From 293a173b302d5e97baad0c58356b57bb9e89a9c7 Mon Sep 17 00:00:00 2001 From: andrei Date: Sat, 5 Oct 2024 09:37:09 +0500 Subject: [PATCH] ._. --- app/core/usecases/auth_service.py | 16 ++++++---------- app/infrastructure/fastapi/accessory_routes.py | 11 +++++++---- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/app/core/usecases/auth_service.py b/app/core/usecases/auth_service.py index 1bd82c4..5fb36a0 100644 --- a/app/core/usecases/auth_service.py +++ b/app/core/usecases/auth_service.py @@ -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 diff --git a/app/infrastructure/fastapi/accessory_routes.py b/app/infrastructure/fastapi/accessory_routes.py index 7add4cf..63de540 100644 --- a/app/infrastructure/fastapi/accessory_routes.py +++ b/app/infrastructure/fastapi/accessory_routes.py @@ -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)