guarantee-admin-api-v0.2/Modules/AdminUser/UserImpl1.py

111 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import json
import random
import time
import requests
from werkzeug.security import generate_password_hash
from DBHelper.MongoHelperInstance import DB_GUA
from Modules.AdminUser.UserObject1 import User, EmailVcodeChecker
from Modules.AdminUser.UserUtils1 import UserUtils
from Modules.Common.CommonUtils import CommonUtils
class UserImpl(object):
@staticmethod
def create(email, name, pwd, role):
"""创建"""
UserUtils.check_mail_fmt(email)
UserUtils.check_email_registered(email)
user = User()
user.uid = UserUtils.generate_new_uid()
user.email = email
user.name = name
user.pwd = generate_password_hash(pwd)
user.status = "normal"
user.role = role
user.create_time = CommonUtils.get_current_time()
DB_GUA.insert_single_data(
"管理端",
"用户",
user.dict_keys_toggle()
)
@staticmethod
def login(email, pwd, vcode):
"""登录"""
user_info = DB_GUA.find_single_data(
"管理端",
"用户",
{"邮箱": email},
["用户ID", "邮箱", "用户名", "密码", "用户状态", "角色"]
)
assert user_info, "邮箱不存在"
assert not user_info['用户状态'] != 'normal', "账户已禁用"
UserUtils.check_vcode_is_correct(email, vcode)
UserUtils.check_pwd_is_correct(user_info['密码'], pwd)
menus = UserUtils.make_menus(user_info['角色'])
token = UserUtils.make_token(user_info['用户ID'])
user = User()
user.name = user_info['用户名']
user.email = user_info['邮箱']
user.status = user_info['用户状态']
user.role = user_info['角色']
return_body = user.dict_keys_toggle()
return_body["menus"] = menus
return_body["token"] = token
return return_body
def disable(self):
"""禁用"""
def active(self):
"""激活"""
class EmailVcodeCheckerImpl(EmailVcodeChecker):
def send_vcode_email(self):
def gen_vcode():
choices = '0123456789'
salt = ''
for i in range(6):
salt += random.choice(choices)
self.vcode = salt
def save_vcode():
DB_GUA.upsert_single_data(
"管理端",
"邮箱验证码记录",
{"email": self.email},
{"vcode": self.vcode, "timestamp": round(time.time())}
)
def send_email():
email_api = 'http://116.63.130.34:30001'
headers = {"Content-Type": "application/json;charset=UTF-8"}
data = {
"title": "【远东资信】{}".format("登录验证码"),
"sender": 'fecribd@fecr.com.cn',
"recipients": [self.email],
"msg_body": "{}的验证码为 【{}5分钟内有效。".format("登录", self.vcode)
}
requests.post(url=email_api + '/send_mail', headers=headers, data=json.dumps(data))
gen_vcode()
save_vcode()
send_email()