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 typing import Optional
from fastapi import Depends, HTTPException from fastapi import Depends, HTTPException
from fastapi.security import OAuth2PasswordBearer from fastapi.security import OAuth2PasswordBearer
import jwt import jwt
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from dotenv import load_dotenv from dotenv import load_dotenv
import os import os
from app.infrastructure.database.dependencies import get_db from app.infrastructure.database.dependencies import get_db
from app.infrastructure.database.repository.user_repository import UsersRepository 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): def create_access_token(data: dict, expires_delta: Optional[timedelta] = None):
to_encode = data.copy() to_encode = data.copy()
if expires_delta: expire = datetime.now(timezone.utc) + (expires_delta if expires_delta else timedelta(minutes=15))
expire = datetime.now(timezone.utc) + expires_delta
else:
expire = datetime.now(timezone.utc) + timedelta(minutes=15)
to_encode.update({"exp": expire}) to_encode.update({"exp": expire})
return jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM) 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( credentials_exception = HTTPException(
status_code=401, status_code=401,
detail="Could not validate credentials", detail="Could not validate credentials",
@ -42,9 +40,7 @@ def verify_token(token: str, db: Session = Depends(get_db)):
raise credentials_exception raise credentials_exception
user_repo = UsersRepository(db) user_repo = UsersRepository(db)
user = user_repo.get_by_id( user = user_repo.get_by_id(int(user_id))
int(user_id)
)
if user is None: if user is None:
raise credentials_exception raise credentials_exception
return user return user

View File

@ -3,19 +3,19 @@ from typing import List
from fastapi import APIRouter, HTTPException, Depends from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session 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.entities.accessory import AccessoryEntity
from app.core.usecases.accessory_service import AccessoriesService 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 = APIRouter()
@router.get("/accessories", response_model=List[AccessoryEntity]) @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) service = AccessoriesService(db)
return service.get_all_accessories() return service.get_all_accessories()
@router.get("/accessories/{accessory_id}", response_model=AccessoryEntity) @router.get("/accessories/{accessory_id}", response_model=AccessoryEntity)
def read_accessory(accessory_id: int, db: Session = Depends(get_db)): def read_accessory(accessory_id: int, db: Session = Depends(get_db)):
service = AccessoriesService(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") raise HTTPException(status_code=404, detail="Accessory not found")
return accessory return accessory
@router.post("/accessories", response_model=AccessoryEntity) @router.post("/accessories", response_model=AccessoryEntity)
def create_accessory(accessory: AccessoryEntity, db: Session = Depends(get_db)): def create_accessory(accessory: AccessoryEntity, db: Session = Depends(get_db)):
service = AccessoriesService(db) service = AccessoriesService(db)
return service.create_accessory(accessory) return service.create_accessory(accessory)
@router.put("/accessories/{accessory_id}", response_model=AccessoryEntity) @router.put("/accessories/{accessory_id}", response_model=AccessoryEntity)
def update_accessory(accessory_id: int, accessory: AccessoryEntity, db: Session = Depends(get_db)): def update_accessory(accessory_id: int, accessory: AccessoryEntity, db: Session = Depends(get_db)):
service = AccessoriesService(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") raise HTTPException(status_code=404, detail="Accessory not found")
return updated_accessory return updated_accessory
@router.delete("/accessories/{accessory_id}", response_model=bool) @router.delete("/accessories/{accessory_id}", response_model=bool)
def delete_accessory(accessory_id: int, db: Session = Depends(get_db)): def delete_accessory(accessory_id: int, db: Session = Depends(get_db)):
service = AccessoriesService(db) service = AccessoriesService(db)