增加email域名验证

This commit is contained in:
wcq 2023-02-20 10:19:16 +08:00
parent 52b2483bc7
commit db5226549f
3 changed files with 16 additions and 11 deletions

View File

@ -6,6 +6,7 @@ from sqlalchemy.orm import Session
from Context.common import ctx from Context.common import ctx
from Crud.UserCrud import get_user_by_email, create_user, rest_user_password from Crud.UserCrud import get_user_by_email, create_user, rest_user_password
from Crud import AppCrud from Crud import AppCrud
from CrudModel.AllowedEmail import allowed_email_crud, AllowedEmailQuery
from Schemas import UserSchemas from Schemas import UserSchemas
from Schemas.ApiCommonSchemas import CommonRes from Schemas.ApiCommonSchemas import CommonRes
from Utils.AuthUtils import Token, token_data_depend, create_token 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)): def login(body: UserSchemas.LoginReqBody, db: Session = Depends(get_db)):
if not body.app_id: if not body.app_id:
raise HTTPException(status_code=202, detail="未传入应用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: if not app:
raise HTTPException(status_code=202, detail="应用信息错误") 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) user_obj = get_user_by_email(db, body.email)
if user_obj is not None: if user_obj is not None:
raise HTTPException(status_code=202, detail="该邮箱已注册") 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) check_res = EmailVerifyCode.check_code(body.email, body.email_verify_code)
if not check_res: if not check_res:

View File

@ -20,7 +20,7 @@ class LoginReqBody(BaseModel):
class EmailSendReqBody(BaseModel): class EmailSendReqBody(BaseModel):
email: EMailRegex = "xxxx@fecr.com.cn" email: str = "xxxx@fecr.com.cn"
class UserInfo(BaseModel): class UserInfo(BaseModel):
@ -55,13 +55,13 @@ class LoginResBody(UserInfo):
class RegisterReqBody(BaseModel): class RegisterReqBody(BaseModel):
email: EMailRegex email: str
password: passwordRegex password: passwordRegex
email_verify_code: str email_verify_code: str
class RestPasswordReqBody(BaseModel): class RestPasswordReqBody(BaseModel):
email: EMailRegex email: str
password: passwordRegex password: passwordRegex
email_verify_code: str email_verify_code: str

View File

@ -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.query(self.db_model).filter_by(id=update_model_obj.id).update(update_model_obj.dict())
db.commit() db.commit()
def query(self, db: Session, params: QuerySchemaType) -> [int, List[ModelType]]: def query(self, db: Session, params: QuerySchemaType) -> [int]:
params_dict = params.dict() params_dict = params.dict()
query = db.query(self.db_model) query = db.query(self.db_model)
for key, value in params_dict.items(): 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'): def auto_create_crud(db_model: Base, name, chinese_name="", auto_create_keys=['id'], index_key='id'):
""" """
自动创建CRUD类 自动创建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, [model, model_id, model_create, model_update, model_query] = create_crud_model(db_model, name,
auto_create_keys, index_key) auto_create_keys, index_key)