feat: add guard clause to improve signup process

This commit is contained in:
Shiyinq 2024-01-20 21:54:53 +07:00
parent f079cb6b56
commit 6a63c94153

View file

@ -91,9 +91,15 @@ async def signin(form_data: SigninForm):
@router.post("/signup", response_model=SigninResponse) @router.post("/signup", response_model=SigninResponse)
async def signup(request: Request, form_data: SignupForm): async def signup(request: Request, form_data: SignupForm):
if request.app.state.ENABLE_SIGNUP: if not request.app.state.ENABLE_SIGNUP:
if validate_email_format(form_data.email.lower()): raise HTTPException(400, detail=ERROR_MESSAGES.ACCESS_PROHIBITED)
if not Users.get_user_by_email(form_data.email.lower()):
if not validate_email_format(form_data.email.lower()):
raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_EMAIL_FORMAT)
if Users.get_user_by_email(form_data.email.lower()):
raise HTTPException(400, detail=ERROR_MESSAGES.EMAIL_TAKEN)
try: try:
role = "admin" if Users.get_num_users() == 0 else "pending" role = "admin" if Users.get_num_users() == 0 else "pending"
hashed = get_password_hash(form_data.password) hashed = get_password_hash(form_data.password)
@ -119,14 +125,6 @@ async def signup(request: Request, form_data: SignupForm):
except Exception as err: except Exception as err:
raise HTTPException(500, raise HTTPException(500,
detail=ERROR_MESSAGES.DEFAULT(err)) detail=ERROR_MESSAGES.DEFAULT(err))
else:
raise HTTPException(400, detail=ERROR_MESSAGES.EMAIL_TAKEN)
else:
raise HTTPException(400,
detail=ERROR_MESSAGES.INVALID_EMAIL_FORMAT)
else:
raise HTTPException(400, detail=ERROR_MESSAGES.ACCESS_PROHIBITED)
############################ ############################
# ToggleSignUp # ToggleSignUp