From 040f10a2ed79d2740cfc63d51473b13e01365b78 Mon Sep 17 00:00:00 2001 From: urec56 Date: Fri, 22 Mar 2024 22:28:17 +0300 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=D1=8B=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BD=D0=B0=D0=BB=D0=B8=D1=87=D0=B8=D1=8F=20=D0=BD=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B8=20=D0=BF=D0=BE=D1=87=D1=82=D1=8B=20=D0=B2?= =?UTF-8?q?=20=D0=B1=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/users/router.py | 20 +++++++++++++++++--- app/users/schemas.py | 6 ++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/users/router.py b/app/users/router.py index 00fa664..5255579 100644 --- a/app/users/router.py +++ b/app/users/router.py @@ -4,7 +4,7 @@ from fastapi.responses import RedirectResponse from app.config import settings from app.exceptions import UsernameAlreadyInUseException, \ IncorrectPasswordException, PasswordsMismatchException, WrongCodeException, UserNotFoundException, \ - SomethingWentWrongException + SomethingWentWrongException, UserAlreadyExistsException from app.users.auth import get_password_hash, authenticate_user_by_email, \ create_access_token, verify_password, VERIFICATED_USER, authenticate_user, \ check_existing_user, check_verificated_user_with_exc @@ -13,7 +13,7 @@ from app.users.dependencies import get_current_user from app.users.models import Users from app.users.schemas import SUserLogin, SUserRegister, SUser, SUserPassword, SUserRename, SUserAvatar, \ SUserPasswordRecover, SUserCode, SUserPasswordChange, SRecoverEmailSent, SUserToken, SEmailVerification, SUserName, \ - SNewAvatar, SConfirmPasswordRecovery, SPasswordRecovered, SUserAvatars + SNewAvatar, SConfirmPasswordRecovery, SPasswordRecovered, SUserAvatars, SUsername, SEmail from app.tasks.tasks import send_registration_confirmation_email, send_password_change_email, \ send_password_recover_email @@ -34,7 +34,21 @@ async def get_all_users(): return users -@router.post("/register", response_model=SUserToken) +@router.post("/check_existing_username", status_code=status.HTTP_200_OK) +async def check_existing_username(username: SUsername): + user = await UserDAO.find_one_or_none(username=username.username) + if user: + raise UserAlreadyExistsException + + +@router.post("/check_existing_email", status_code=status.HTTP_200_OK) +async def check_existing_email(email: SEmail): + user = await UserDAO.find_one_or_none(email=email.email) + if user: + raise UserAlreadyExistsException + + +@router.post("/register", response_model=SUserToken, status_code=status.HTTP_201_CREATED) async def register_user(response: Response, user_data: SUserRegister): await check_existing_user(user_data) hashed_password = get_password_hash(user_data.password) diff --git a/app/users/schemas.py b/app/users/schemas.py index 2ba25fe..787d018 100644 --- a/app/users/schemas.py +++ b/app/users/schemas.py @@ -123,3 +123,9 @@ class SUserAvatars(BaseModel): avatar_image: str +class SUsername(BaseModel): + username: str = Query(None, min_length=2, max_length=30) + + +class SEmail(BaseModel): + email: EmailStr