diff --git a/routers/me.py b/routers/me.py index f554cf6..54ba96e 100644 --- a/routers/me.py +++ b/routers/me.py @@ -5,10 +5,11 @@ import models from routers import auth import schemas.users as user_schemas +import schemas.projects_users as projects_users_schemas router = APIRouter(prefix="/me", tags=["me"]) -@router.get("/", response_model=user_schemas.UserBase, tags=["me", "users"]) +@router.get("/", response_model=projects_users_schemas.ProjectUserBase, tags=["me", "users"]) def get_me(request: Request, db: db_dependency): """Get current authenticated user""" token = request.cookies.get("access_token") @@ -62,37 +63,8 @@ def logout(request: Request,response: Response): @router.delete("/delete-me", tags=["me", "auth", "users"]) def delete_me(request: Request, db: db_dependency): """Delete current authenticated user""" - token = request.cookies.get("access_token") - - if not token: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Not logged in" - ) - - try: - payload = jwt.decode(token, auth.SECRET_KEY, algorithms=[auth.ALGORITHM]) - user_id: str = str(payload.get("sub")) - if user_id is None: - request.cookies.clear() ## removing invalid auth cookie - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Not logged in" - ) - except JWTError: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Could not validate credentials" - ) - -## User retrieval and deletion - user = db.query(models.User).filter(models.User.id == int(user_id)).first() - if user is None: - request.cookies.clear() ## removing invalid auth cookie - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="User not found" - ) + + user = auth.get_user_from_jwt(request, db) db.delete(user) db.commit() diff --git a/schemas/projects_users.py b/schemas/projects_users.py new file mode 100644 index 0000000..4ea25a2 --- /dev/null +++ b/schemas/projects_users.py @@ -0,0 +1,10 @@ +from typing import List + +from pydantic import ConfigDict +from schemas.projects import ProjectBase +from schemas.users import UserBase + +class ProjectUserBase(UserBase): + model_config = ConfigDict(from_attributes=True) + + projects: List[ProjectBase]