mirror of
https://github.com/tgbot-collection/YYeTsBot.git
synced 2025-11-25 11:29:38 +08:00
邮件验证修复
This commit is contained in:
@@ -783,16 +783,17 @@ class UserMongoResource(UserResource, Mongo):
|
|||||||
if data.get(field):
|
if data.get(field):
|
||||||
valid_data[field] = data[field]
|
valid_data[field] = data[field]
|
||||||
|
|
||||||
if valid_data.get("email") and not re.findall(r"\S@\S", valid_data.get("email")):
|
email_regex = r"@gmail\.com|@outlook\.com|@qq\.com|@163\.com"
|
||||||
return {"status_code": HTTPStatus.BAD_REQUEST, "status": False, "message": "email format error "}
|
if valid_data.get("email") and not re.findall(email_regex, valid_data.get("email"), re.IGNORECASE):
|
||||||
|
return {"status_code": HTTPStatus.BAD_REQUEST, "status": False, "message": "不支持的邮箱"}
|
||||||
elif valid_data.get("email"):
|
elif valid_data.get("email"):
|
||||||
# rate limit
|
# rate limit
|
||||||
user_email = valid_data.get("email")
|
user_email = valid_data.get("email")
|
||||||
timeout_key = f"timeout-{user_email}"
|
timeout_key = f"timeout-{username}"
|
||||||
if redis.get(timeout_key):
|
if redis.get(timeout_key):
|
||||||
return {"status_code": HTTPStatus.TOO_MANY_REQUESTS,
|
return {"status_code": HTTPStatus.TOO_MANY_REQUESTS,
|
||||||
"status": False,
|
"status": False,
|
||||||
"message": f"try again in {redis.ttl(timeout_key)}s"}
|
"message": f"验证次数过多,请于{redis.ttl(timeout_key)}秒后尝试"}
|
||||||
|
|
||||||
verify_code = random.randint(10000, 99999)
|
verify_code = random.randint(10000, 99999)
|
||||||
valid_data["email"] = {"verified": False, "address": user_email}
|
valid_data["email"] = {"verified": False, "address": user_email}
|
||||||
@@ -801,16 +802,17 @@ class UserMongoResource(UserResource, Mongo):
|
|||||||
body = f"{username} 您好,<br>请输入如下验证码完成你的邮箱认证。验证码有效期为24小时。<br>" \
|
body = f"{username} 您好,<br>请输入如下验证码完成你的邮箱认证。验证码有效期为24小时。<br>" \
|
||||||
f"如果您未有此请求,请忽略此邮件。<br><br>验证码: {verify_code}"
|
f"如果您未有此请求,请忽略此邮件。<br><br>验证码: {verify_code}"
|
||||||
|
|
||||||
|
send_mail(user_email, subject, body)
|
||||||
|
# 发送成功才设置缓存
|
||||||
redis.set(timeout_key, username, ex=1800)
|
redis.set(timeout_key, username, ex=1800)
|
||||||
redis.hset(user_email, mapping={"code": verify_code, "wrong": 0})
|
redis.hset(user_email, mapping={"code": verify_code, "wrong": 0})
|
||||||
redis.expire(user_email, 24 * 3600)
|
redis.expire(user_email, 24 * 3600)
|
||||||
send_mail(user_email, subject, body)
|
|
||||||
|
|
||||||
self.db["users"].update_one(
|
self.db["users"].update_one(
|
||||||
{"username": username},
|
{"username": username},
|
||||||
{"$set": valid_data}
|
{"$set": valid_data}
|
||||||
)
|
)
|
||||||
return {"status_code": HTTPStatus.CREATED, "status": True, "message": "success"}
|
return {"status_code": HTTPStatus.CREATED, "status": True, "message": "邮件已经成功发送"}
|
||||||
|
|
||||||
|
|
||||||
class DoubanMongoResource(DoubanResource, Mongo):
|
class DoubanMongoResource(DoubanResource, Mongo):
|
||||||
|
|||||||
Reference in New Issue
Block a user