From 2d41c02592485612518ffe0e55623aedc3a8619f Mon Sep 17 00:00:00 2001 From: urec56 Date: Thu, 13 Jun 2024 16:26:14 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=8D=D0=BD=D0=B4=D0=BF=D0=BE=D0=B8=D0=BD=D1=82=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20=D0=BF?= =?UTF-8?q?=D0=B0=D1=80=D0=BE=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/exceptions.py | 5 +++++ app/users/router.py | 19 +++++++++++++++++-- app/users/schemas.py | 4 ++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/app/exceptions.py b/app/exceptions.py index 94c37dd..a9172fa 100644 --- a/app/exceptions.py +++ b/app/exceptions.py @@ -29,6 +29,11 @@ class UserNotFoundException(BlackPhoenixException): detail = "Юзер не найден" +class PasswordAlreadyInUseException(BlackPhoenixException): + status_code = status.HTTP_409_CONFLICT + detail = "Пароль уже занят" + + class UserMustConfirmEmailException(BlackPhoenixException): status_code = status.HTTP_409_CONFLICT detail = "Сначала подтвердите почту" diff --git a/app/users/router.py b/app/users/router.py index 45d35a8..869753f 100644 --- a/app/users/router.py +++ b/app/users/router.py @@ -1,7 +1,9 @@ +from random import randrange + from fastapi import APIRouter, Depends, status from app.config import settings -from app.exceptions import UserNotFoundException +from app.exceptions import UserNotFoundException, PasswordAlreadyInUseException from app.users.exceptions import ( UserAlreadyExistsException, IncorrectAuthDataException, @@ -31,6 +33,7 @@ from app.users.schemas import ( STokenLogin, SUsers, SConfirmationData, + SUserPassword, ) from app.tasks.tasks import ( send_registration_confirmation_email, @@ -67,6 +70,17 @@ async def check_existing_user(user_filter: SUserFilter, uow=Depends(UnitOfWork)) pass +@router.post( + "/check_existing_password", + status_code=status.HTTP_200_OK, + response_model=None +) +async def check_existing_password(user_password: SUserPassword): + random_int = randrange(10) + if random_int > 5: + raise PasswordAlreadyInUseException + + @router.post( "/register", status_code=status.HTTP_201_CREATED, @@ -143,7 +157,8 @@ async def get_user(current_user: SUser = Depends(get_current_user)): ) async def get_user_avatars_history(user=Depends(get_current_user), uow=Depends(UnitOfWork)): async with uow: - return await uow.user.get_user_avatars(user_id=user.id) + user_avatars = await uow.user.get_user_avatars(user_id=user.id) + return user_avatars @router.post( diff --git a/app/users/schemas.py b/app/users/schemas.py index 0b4d7bd..c5bc0ac 100644 --- a/app/users/schemas.py +++ b/app/users/schemas.py @@ -98,6 +98,10 @@ class SUserFilter(BaseModel): email: EmailStr | None = None +class SUserPassword(BaseModel): + user_password: str = Query(None, min_length=8) + + class SConfirmationData(BaseModel): user_id: int username: str