From a0d1fe40a99f3e9ccce86d1cc7ac370d0c9b1469 Mon Sep 17 00:00:00 2001 From: Anaz Date: Wed, 19 Feb 2025 13:08:30 +0400 Subject: [PATCH] adding user service getuserbyemail --- api/v1/users.py | 6 +++++- services/user_service.py | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/api/v1/users.py b/api/v1/users.py index b067810..bc3ef10 100644 --- a/api/v1/users.py +++ b/api/v1/users.py @@ -32,4 +32,8 @@ async def unblock_user(user_action: UserBlockBan, db: AsyncSession = Depends(get @router.post("/unban", status_code=200) async def unban_user(user_action: UserBlockBan, db: AsyncSession = Depends(get_db), token: str = Depends(oauth2_scheme)): - return await UserService.unban_user(user_action, db, token) \ No newline at end of file + return await UserService.unban_user(user_action, db, token) + +@router.get("/getuserbymail", response_model=UserResponse) +async def get_user_by_email(email: str, db=Depends(get_db), token: str = Depends(oauth2_scheme)): + return await UserService.get_user_by_email(email, db, token) \ No newline at end of file diff --git a/services/user_service.py b/services/user_service.py index 61ae4c9..cd9ab99 100644 --- a/services/user_service.py +++ b/services/user_service.py @@ -128,3 +128,13 @@ class UserService: if result.rowcount == 0: raise HTTPException(status_code=404, detail="User not found") return {"message": f"User {user_action.email} unbanned"} + + @staticmethod + async def get_user_by_email(email: str, db, token: str): + await AuthService.check_permissions(token, db, ["admin"] ) + query = select(users_table).where(users_table.c.email == email) + result = await db.execute(query) + user = result.mappings().first() + if not user: + raise HTTPException(status_code=404, detail="User not found") + return UserResponse(**user)