import random import time from werkzeug.security import check_password_hash from CompanyUser.CompanyUser_obj import CompanyUser, VerifyInfo from DBHelper.MongoHelper import MongoHelper from Utils.ErrorUtil import ReturnConditionCheckFailed from user.user_auth import create_token class CompanyUserImpl(CompanyUser): """企业用户实现类""" db = MongoHelper("tfse_v0.21") def login(self): """""" company_user = self.db.find_single_data( "应用端", "企业用户", {"邮箱": self.email}, ["企业ID", "企业名称", "邮箱", "密码"] ) def check_user_existed(): """检查用户是否存在""" if company_user is None: raise ReturnConditionCheckFailed("不存在该用户", 200) def check_password_correct(): """检查密码是否正确""" if not check_password_hash(company_user['密码'], self.pwd): raise ReturnConditionCheckFailed("登录密码错误", 200) def __main__(): """""" check_user_existed() check_password_correct() self.cid = company_user['企业ID'] self.name = company_user['企业名称'] self.email = company_user['邮箱'] return_body = self.dict_to_show() return_body['token'] = create_token({"cid": self.cid}) return return_body return __main__() def register(self, code): """注册""" def check_email_registered(): """检查邮箱是否已被注册""" email = self.db.find_single_column( "应用端", "企业用户", {"邮箱": self.email}, "邮箱" ) if email is not None: raise ReturnConditionCheckFailed("邮箱已被注册", 200) def check_vcode_correct(): """检查邮箱验证码是否正确""" verify_data = self.db.find_single_data( "应用端", "邮箱验证码记录", {"邮箱": self.email}, ["验证码", "验证有效期"] ) if not verify_data: raise ReturnConditionCheckFailed("验证码错误", 200) if verify_data['验证码'] != code: raise ReturnConditionCheckFailed("验证码错误", 200) if time.time()-verify_data['验证有效期'] > 300: raise ReturnConditionCheckFailed('验证码过期', 200) def make_new_cid(): """生成新的企业ID,如果该ID存在,则重新生成""" def random_cid(num): """随机企业ID""" choices = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' salt = '' for i in range(num): salt += random.choice(choices) return salt new_cid = random_cid(8) case = self.db.find_single_column( "应用端", "企业用户", {"企业ID": new_cid}, "企业ID" ) is not None while case: new_cid = random_cid(8) return new_cid def __main__(): """""" check_email_registered() check_vcode_correct() self.cid = make_new_cid() self.avatar_id = "623152edf36000004f00124e" self.verify_status = "否" self.verify_info = VerifyInfo() self.db.insert_single_data( "应用端", "企业用户", self.dict_to_save() ) self.db.delete_single_data( "应用端", "邮箱验证码记录", {"邮箱": self.email} ) __main__()