diff --git a/Router/UserRegisterRouter.py b/Router/UserRegisterRouter.py index de110b4..cd79669 100644 --- a/Router/UserRegisterRouter.py +++ b/Router/UserRegisterRouter.py @@ -6,6 +6,7 @@ from sqlalchemy.orm import Session from Context.common import ctx from Crud.UserCrud import get_user_by_email, create_user, rest_user_password from Crud import AppCrud +from CrudModel.AllowedEmail import allowed_email_crud, AllowedEmailQuery from Schemas import UserSchemas from Schemas.ApiCommonSchemas import CommonRes from Utils.AuthUtils import Token, token_data_depend, create_token @@ -69,7 +70,7 @@ def login(body: UserSchemas.LoginReqBody, db: Session = Depends(get_db)): def login(body: UserSchemas.LoginReqBody, db: Session = Depends(get_db)): if not body.app_id: raise HTTPException(status_code=202, detail="未传入应用ID") - app = AppCrud.get_app_by_id(db,body.app_id) + app = AppCrud.get_app_by_id(db, body.app_id) if not app: raise HTTPException(status_code=202, detail="应用信息错误") # 图片验证码校验 @@ -100,6 +101,16 @@ def register(body: UserSchemas.RegisterReqBody, db: Session = Depends(get_db)): user_obj = get_user_by_email(db, body.email) if user_obj is not None: raise HTTPException(status_code=202, detail="该邮箱已注册") + # 判断邮箱是否合规 + count, item_list = allowed_email_crud.query(db, AllowedEmailQuery()) + email_checked = False + for item in item_list: + if body.email.endswith(item.email): + email_checked = True + break + if not email_checked: + raise HTTPException(status_code=202, detail="该域名邮箱不允许注册") + # 邮箱验证码校验 check_res = EmailVerifyCode.check_code(body.email, body.email_verify_code) if not check_res: diff --git a/Schemas/UserSchemas.py b/Schemas/UserSchemas.py index b445d90..4149a22 100644 --- a/Schemas/UserSchemas.py +++ b/Schemas/UserSchemas.py @@ -20,7 +20,7 @@ class LoginReqBody(BaseModel): class EmailSendReqBody(BaseModel): - email: EMailRegex = "xxxx@fecr.com.cn" + email: str = "xxxx@fecr.com.cn" class UserInfo(BaseModel): @@ -55,13 +55,13 @@ class LoginResBody(UserInfo): class RegisterReqBody(BaseModel): - email: EMailRegex + email: str password: passwordRegex email_verify_code: str class RestPasswordReqBody(BaseModel): - email: EMailRegex + email: str password: passwordRegex email_verify_code: str diff --git a/Utils/CrudUtils.py b/Utils/CrudUtils.py index b101dcc..3ac0bf7 100644 --- a/Utils/CrudUtils.py +++ b/Utils/CrudUtils.py @@ -139,7 +139,7 @@ class CRUDBase(Generic[DbModelType, ModelType, IdSchemaType, CreateSchemaType, U db.query(self.db_model).filter_by(id=update_model_obj.id).update(update_model_obj.dict()) db.commit() - def query(self, db: Session, params: QuerySchemaType) -> [int, List[ModelType]]: + def query(self, db: Session, params: QuerySchemaType) -> [int]: params_dict = params.dict() query = db.query(self.db_model) for key, value in params_dict.items(): @@ -188,12 +188,6 @@ def create_crud_model(db_model: Base, name, auto_create_keys=['id'], index_key=' def auto_create_crud(db_model: Base, name, chinese_name="", auto_create_keys=['id'], index_key='id'): """ 自动创建CRUD类 - :param db_model: - :param name: - :param chinese_name: - :param auto_create_keys: - :param index_key: - :return: """ [model, model_id, model_create, model_update, model_query] = create_crud_model(db_model, name, auto_create_keys, index_key)