def change_password(): '''更改密码''' validator = ChangePasswordValidator().nt_data UserDao.change_password(uid=g.user.id, old_password=validator.old_password, new_password=validator.new_password) return Success(error_code=1)
def verify_by_wx_account(code, *args): ot = AccountToken(code) user_info = ot.get() unionid = user_info['unionid'] user = User.query.filter_by(unionid=unionid).first() if not user: user = UserDao.register_by_wx_account(form=user_info) return {'uid': user.id, 'scope': user.auth_scope}
def verify_by_wx_open(code, *args): # 微信开放平台(第三方)登录 ot = OpenToken(code) user_info = ot.get() openid = user_info['openid'] # 用户唯一标识 user = User.query.filter_by(openid=openid).first() if not user: user = UserDao.register_by_wx_open(form=user_info) return {'uid': user.id, 'scope': user.auth_scope}
def verify_by_wx_mina(code, *args): ut = WxToken(code) wx_result = ut.get() # wx_result = {session_key, expires_in, openid} openid = wx_result['openid'] identity = Identity.get(identifier=openid, type=ClientTypeEnum.WX_MINA.value) # 如果不在数据库,则新建用户 if not identity: user = UserDao.register_by_wx_mina(openid=openid) else: user = User.get(id=identity.user_id) return {'uid': user.id, 'scope': user.auth_scope}
def reset_password(uid): '''更改用户密码''' new_password = ResetPasswordValidator().nt_data.new_password UserDao.reset_password(uid=uid, password=new_password) return Success(error_code=1, msg='密码修改成功')
def delete_user(uid): '''删除用户''' UserDao.delete_user(uid) return Success(error_code=2)
def update_user(uid): '''更新用户分组''' group_id = UpdateAdminValidator().get_data('group_id') UserDao.change_group(uid, group_id) return Success(error_code=1)
def get_user_list(): '''查询用户列表(分页)''' page, size = paginate() rv = UserDao.get_user_list(page, size) return Success(rv)
def get_rel(self): user = UserDao.relation_test() logger.info('get_rel..........') return Success(user)
def post_test(self): UserDao.create_user() return Success()
def delete_user(): '''注销自身''' UserDao.delete_user(uid=g.user.id) return Success(error_code=2)
def update_user(): '''更新自身''' form = UpdateUserValidator().nt_data UserDao.update_user(uid=g.user.id, form=form) return Success(error_code=1)
def create_user(): '''用户注册''' form = CreateUserValidator().nt_data UserDao.create_user(form) return Success(error_code=1)
def set_avatar(): '''更新用户头像''' validator = UpdateAvatarValidator().nt_data UserDao.set_avatar(id=g.user.id, avatar=validator.avatar) return Success(error_code=1, msg='更新头像成功')
class UserService(object): #used def _md5(self,str): if str == None: return '' else: return hashlib.md5(str).hexdigest() def __init__(self): self.uda = UserDao() self.InvalidDateTime = datetime.datetime(1900,1,1,0,0,0) self.BadWords = ':;,\'"/\\*#!&^.%<>' #used def check_user_identity(self,username,password): encpwd = self._md5(password) return self.uda.validate_user_encpwd(username,encpwd) def is_safe_username(self, username): ua = re.split('['+self.BadWords+']',username) if len(ua) > 1: return False else: return True def is_user_exist(self, username): rows = self.uda.get_user_info(username,field='FUID') if rows == None or len(rows) == 0: return False else: return True def register(self,boy,girl): encodeUtil = EncodeUtil() boyname = boy['username'] girlname = girl['username'] nowtime = datetime.datetime.now() boy['id'] = uuid.uuid5(uuid.NAMESPACE_DNS,uuid.uuid1().get_hex()).get_hex() boy['lover'] = girlname boy['time'] = nowtime boy['password'] = encodeUtil.md5hash(boy['password']) boy['birthday'] = self.InvalidDateTime boy['nickname'] = boyname boy['sex'] = '1' girl['id'] = uuid.uuid5(uuid.NAMESPACE_DNS,uuid.uuid1().get_hex()).get_hex() girl['lover'] = boyname girl['time'] = nowtime girl['password'] = encodeUtil.md5hash(girl['password']) girl['birthday'] = self.InvalidDateTime girl['nickname'] = girlname girl['sex'] = '2' if self.is_user_exist(boyname): return -1 if self.is_user_exist(girlname): return -2 self.uda.insert_user_info(boy) self.uda.insert_user_info(girl) return 0 def get_user_face_path(self, username): rows = self.uda.get_user_info(username, field='FUFaceImage') if(rows == None or len(rows) == 0): return None else: return rows[0]['FUFaceImage'] def get_lover_name(self, username): return self.uda.get_user_lover_name(username) #cache def update_user_logininfo(self, username,ip): logininfo = { 'username':username, 'ip':ip, 'time':datetime.datetime.now() } self.uda.update_user_logininfo(logininfo) def update_password(self, username, old_pwd, pwd, pwd_lover): old_pwd_pass = self.check_user_identity(username, old_pwd) if not old_pwd_pass: return -1 encodeUtil = EncodeUtil() if pwd != None and len(pwd) > 0 : self.uda.reset_password(username,encodeUtil.md5hash(pwd)) if pwd_lover != None and len(pwd_lover) > 0: self.uda.reset_password_lover(username,encodeUtil.md5hash(pwd_lover)) return 0 def reset_password(self, username, enc_pwd, pwd): pwd_field = 'FUPassword' userinfo = self.uda.get_user_info(username,pwd_field) old_pwd = userinfo[pwd_field] encodeUtil = EncodeUtil() old_encpwd = encodeUtil.md5hash('walpw'+old_pwd+'walgw') if enc_pwd == old_encpwd: self.uda.reset_password(username,encodeUtil.md5hash(pwd)) return 0 else: return -1 def save_userinfo(self,username,userinfo): strbirthday = userinfo['birthday'] if strbirthday == None or len(strbirthday) == 0: birthday = self.InvalidDateTime else: birthday = datetime.datetime.strptime(strbirthday,'%Y_%m_%d') self.uda.save_user_info(username,userinfo['bigarea'],userinfo['smallarea'],birthday,userinfo['email']) #used def get_user_info(self, username): userinfo = None if username != None and len(username) > 0: userinfos = self.uda.get_user_info(username) if userinfos != None and len(userinfos) > 0: userinfo = userinfos[0] return userinfo strArray = [] strArray.append('<?xml version=\"1.0\" encoding=\"utf-8\"?>') strArray.append('<userinfos>') strArray.append(self.strf_userinfo(userinfo)) strArray.append('</userinfos>') return ''.join(strArray) def strf_userinfo(self, userinfo): if userinfo == None : return '' if userinfo['FUSex'] == 1: sex = 'male' else: sex = 'female' birthday = userinfo['FUBirthday'] if birthday == self.InvalidDateTime: strbirthday = '' else: strbirthday = birthday.strftime('%m/%d/%Y') strArray = [] strArray.append('<userinfo>') strArray.append('<username>{0}</username>'.format(userinfo['FUName'])) strArray.append('<sex>{0}</sex>'.format(sex)) strArray.append('<lover>{0}</lover>'.format(userinfo['FULover'])) strArray.append('<email>{0}</email>'.format(userinfo['FUSafeEmail'])) strArray.append('<birthday>{0}</birthday>'.format(strbirthday)) strArray.append('<bigarea>{0}</bigarea>'.format(userinfo['FUAreaBig'])) strArray.append('<smallarea>{0}</smallarea>'.format(userinfo['FUAreaSmall'])) strArray.append('</userinfo>') return ''.join(strArray)
def __init__(self): self.uda = UserDao() self.InvalidDateTime = datetime.datetime(1900,1,1,0,0,0) self.BadWords = ':;,\'"/\\*#!&^.%<>'