feat: email api add password param

This commit is contained in:
Joe
2024-09-26 14:30:06 +08:00
parent 0cbef254cd
commit 5066233cd4
3 changed files with 25 additions and 10 deletions

View File

@ -31,18 +31,23 @@ class ForgotPasswordSendEmailApi(Resource):
def post(self):
parser = reqparse.RequestParser()
parser.add_argument("email", type=email, required=True, location="json")
parser.add_argument("language", type=str, required=False, location="json")
args = parser.parse_args()
account = Account.query.filter_by(email=args["email"]).first()
token = None
if account is None:
if dify_config.ALLOW_REGISTER:
token = AccountService.send_reset_password_email(email=args["email"])
token = AccountService.send_reset_password_email(
email=args["email"], language=args["language"] or "en-US"
)
else:
raise NotAllowedRegister()
elif account:
try:
token = AccountService.send_reset_password_email(account=account, email=args["email"])
token = AccountService.send_reset_password_email(
account=account, email=args["email"], language=args["language"] or "en-US"
)
except RateLimitExceededError:
logging.warning(f"Rate limit exceeded for email: {args['email']}")
raise PasswordResetRateLimitExceededError()

View File

@ -81,16 +81,19 @@ class ResetPasswordSendEmailApi(Resource):
def post(self):
parser = reqparse.RequestParser()
parser.add_argument("email", type=email, required=True, location="json")
parser.add_argument("language", type=str, required=False, location="json")
args = parser.parse_args()
account = AccountService.get_user_through_email(args["email"])
if account is None:
if dify_config.ALLOW_REGISTER:
token = AccountService.send_reset_password_email(email=args["email"])
token = AccountService.send_reset_password_email(
email=args["email"], language=args["language"] or "en-US"
)
else:
raise NotAllowedRegister()
else:
token = AccountService.send_reset_password_email(account=account)
token = AccountService.send_reset_password_email(account=account, language=args["language"])
return {"result": "success", "data": token}
@ -100,16 +103,19 @@ class EmailCodeLoginSendEmailApi(Resource):
def post(self):
parser = reqparse.RequestParser()
parser.add_argument("email", type=email, required=True, location="json")
parser.add_argument("language", type=str, required=False, location="json")
args = parser.parse_args()
account = AccountService.get_user_through_email(args["email"])
if account is None:
if dify_config.ALLOW_REGISTER:
token = AccountService.send_email_code_login_email(email=args["email"])
token = AccountService.send_email_code_login_email(
email=args["email"], language=args["language"] or "en-US"
)
else:
raise NotAllowedRegister()
else:
token = AccountService.send_email_code_login_email(account=account)
token = AccountService.send_email_code_login_email(account=account, language=args["language"])
return {"result": "success", "data": token}