Browse Source

Merge pull request #538 from Shiyinq/refactor-signup

feat: add guard clause to improve signup process
Timothy Jaeryang Baek 1 year ago
parent
commit
95da5ab8e0
1 changed files with 32 additions and 34 deletions
  1. 32 34
      backend/apps/web/routers/auths.py

+ 32 - 34
backend/apps/web/routers/auths.py

@@ -91,42 +91,40 @@ async def signin(form_data: SigninForm):
 
 @router.post("/signup", response_model=SigninResponse)
 async def signup(request: Request, form_data: SignupForm):
-    if request.app.state.ENABLE_SIGNUP:
-        if validate_email_format(form_data.email.lower()):
-            if not Users.get_user_by_email(form_data.email.lower()):
-                try:
-                    role = "admin" if Users.get_num_users() == 0 else "pending"
-                    hashed = get_password_hash(form_data.password)
-                    user = Auths.insert_new_auth(form_data.email.lower(),
-                                                 hashed, form_data.name, role)
-
-                    if user:
-                        token = create_token(data={"email": user.email})
-                        # response.set_cookie(key='token', value=token, httponly=True)
-
-                        return {
-                            "token": token,
-                            "token_type": "Bearer",
-                            "id": user.id,
-                            "email": user.email,
-                            "name": user.name,
-                            "role": user.role,
-                            "profile_image_url": user.profile_image_url,
-                        }
-                    else:
-                        raise HTTPException(
-                            500, detail=ERROR_MESSAGES.CREATE_USER_ERROR)
-                except Exception as err:
-                    raise HTTPException(500,
-                                        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:
+    if not request.app.state.ENABLE_SIGNUP:
         raise HTTPException(400, detail=ERROR_MESSAGES.ACCESS_PROHIBITED)
+        
+    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:
+        role = "admin" if Users.get_num_users() == 0 else "pending"
+        hashed = get_password_hash(form_data.password)
+        user = Auths.insert_new_auth(form_data.email.lower(),
+                                     hashed, form_data.name, role)
 
+        if user:
+            token = create_token(data={"email": user.email})
+            # response.set_cookie(key='token', value=token, httponly=True)
+
+            return {
+                "token": token,
+                "token_type": "Bearer",
+                "id": user.id,
+                "email": user.email,
+                "name": user.name,
+                "role": user.role,
+                "profile_image_url": user.profile_image_url,
+            }
+        else:
+            raise HTTPException(
+                500, detail=ERROR_MESSAGES.CREATE_USER_ERROR)
+    except Exception as err:
+        raise HTTPException(500,
+                            detail=ERROR_MESSAGES.DEFAULT(err))
 
 ############################
 # ToggleSignUp