def edit(self): # 参数 req = self.request() data = Inc.json_decode(req.get('data')) if not data or type(data)!=dict or not data.get('tel') : return self.getJSON({'code':4000,'msg':'参数错误!'}) uid = req.get('uid').strip() tel = data['tel'].strip() passwd = Inc.md5(data['passwd']) if data['passwd']!='' else '' # 验证手机 res = Safety.isRight('tel',tel) if not Safety.isRight('tel',tel) : return self.getJSON({'code':4000,'msg':'手机号码有误!'}) # 是否存在 res = User().findFirst({'where':'tel=:tel:','bind':{'tel':tel}}) if res : if passwd != '' : params = {'data': {'password':passwd}, 'where':'id=:uid:', 'bind':{'uid':uid}} if User().update(params) : return self.getJSON({'code':0,'msg':'成功'}) else : return self.getJSON({'code':5000,'msg':'更新密码失败!'}) else : return self.getJSON({'code':4000,'msg':'密码为6-16位字符!'}) # 修改手机 uData = {'tel':tel} if passwd != '' : uData['password']=passwd params = {'data': uData, 'where':'id=:uid:', 'bind':{'uid':uid}} if User().update(params) : return self.getJSON({'code':0,'msg':'成功'}) else : return self.getJSON({'code':5000,'msg':'编辑失败!'})
def edit(self): req = self.request() passwd = req.get('passwd') passwd1 = req.get('passwd1') # 验证 if passwd==passwd1 : return self.getJSON({'code':4000,'msg':'不能与原密码相同!'}) if not Safety.isRight('passwd',passwd) or not Safety.isRight('passwd',passwd1) : return self.getJSON({'code':4000,'msg':'密码格式错误!'}) # 用户信息 m1 = User() m1.where('id=%s AND password="******"'%(self.tokenData['uid'],Inc.md5(passwd))) m1.columns('id') info = m1.findFirst() # 是否存在 if len(info)==0 : return self.getJSON({'code':4000,'msg':'当前密码错误!'}) # 保存 m2 = User() m2.password = Inc.md5(passwd1) m2.where('id='+str(self.tokenData['uid'])) if m2.update() : return self.getJSON({'code':0,'msg':'成功'}) else : return self.getJSON({'code':5000,'msg':'修改失败!'})
def add(self): # 参数 req = self.request() data = Inc.json_decode(req.get('data')) if not data or type(data)!=dict or not data.get('tel') : return self.getJSON({'code':4000,'msg':'参数错误!'}) tel = data['tel'].strip() passwd = Inc.md5(data['passwd']) if data['passwd']!='' else Inc.md5('123456') # 验证手机 res = Safety.isRight('tel',tel) if not Safety.isRight('tel',tel) : return self.getJSON({'code':4000,'msg':'手机号码有误!'}) # 是否存在 res = User().findFirst({'where':'tel=:tel:','bind':{'tel':tel}}) if res : return self.getJSON({'code':4000,'msg':'该用户已存在!'}) # 保存 params = { 'id': Data.getId(), 'tel': tel, 'password': passwd, 'rtime': Inc.date('%Y%m%d%H%M%S'), } # 结果 if User().insert(params) == 0 : return self.getJSON({'code':0,'msg':'成功'}) else : return self.getJSON({'code':5000,'msg':'添加失败!'})
def login(self): req = self.request() uname = req.get('uname') passwd = Inc.md5(req.get('passwd')) # 验证用户名 if Safety.isRight('uname', uname) and Safety.isRight( 'tel', uname) and Safety.isRight('email', uname): return self.getJSON({'code': 4000, 'msg': '请输入用户名/手机/邮箱'}) # 查询 model = User() model.table( 'user AS a LEFT JOIN user_info AS b ON a.id=b.uid LEFT JOIN user_perm AS c ON a.id=c.uid' ) model.columns( 'a.id, a.state, b.position, b.nickname, b.name, b.gender, b.img, c.state_admin' ) model.where( '(a.uname=":uname:" OR a.tel=":uname:" OR a.email=":uname:") AND a.password="******"', { 'uname': uname, 'passwd': passwd }) uData = model.findFirst() # 是否存在 if len(uData) == 0: return self.getJSON({'code': 4000, 'msg': '帐号或密码错误'}) # 是否禁用 if uData['state'] != '1': return self.getJSON({'code': 4000, 'msg': '该用户已被禁用'}) elif uData['state_admin'] != '1': return self.getJSON({'code': 4000, 'msg': '该用户不允许登录'}) # 登录时间 m = User() m.ltime = Inc.date('%Y%m%d%H%M%S') m.where('id=' + str(uData['id'])) m.update() # 返回 return self.getJSON({ 'code': 0, 'msg': '成功登录', 'uinfo': { 'uid': uData['id'], 'uname': uname, 'position': uData['position'], 'nickname': uData['nickname'], 'name': uData['name'], 'gender': uData['gender'], 'img': Env.base_url + uData['img'] if uData['img'] != '' else '', }, 'token': AdminToken().create({ 'uid': str(uData['id']), 'uname': uname }) })
def login(self): req = self.request() uname = req.get('uname') passwd = Inc.md5(req.get('passwd')) # 验证用户名 if Safety.isRight('uname', uname) and Safety.isRight( 'tel', uname) and Safety.isRight('email', uname): return self.getJSON({'code': 4000, 'msg': '请输入用户名/手机/邮箱'}) # 查询数据 uData = User().findFirst({ 'table': 'user as a LEFT JOIN user_info as b ON a.id=b.uid LEFT JOIN user_perm as c ON a.id=c.uid', 'columns': 'a.id, a.state, b.position, b.nickname, b.name, b.gender, b.img, c.state_admin', 'where': f'(a.uname="{uname}" OR a.tel="{uname}" OR a.email="{uname}") AND a.password="******"', }) # 是否存在 if uData == None: return self.getJSON({'code': 4000, 'msg': '帐号或密码错误'}) # 是否禁用 if uData['state'] != '1': return self.getJSON({'code': 4000, 'msg': '该用户已被禁用'}) elif uData['state_admin'] != '1': return self.getJSON({'code': 4000, 'msg': '该用户不允许登录'}) # 登录时间 User().update({ 'data': { 'ltime': Inc.date('%Y%m%d%H%M%S') }, 'where': 'id=' + str(uData['id']), }), # 返回 return self.getJSON({ 'code': 0, 'msg': '成功登录', 'uinfo': { 'uid': uData['id'], 'uname': uname, 'position': uData['position'], 'nickname': uData['nickname'], 'name': uData['name'], 'gender': uData['gender'], 'img': Env.base_url + uData['img'] if uData['img'] != '' else '', }, 'token': AdminToken().create({ 'uid': str(uData['id']), 'uname': uname }) })
def create(self,data) : data['l_time'] = Inc.date('%Y-%m-%d %H:%M:%S') token = Safety.encode(data) # 缓存 name = Env.admin_token_prefix+str(data['uid']) Redis.run().setex(name,Env.admin_token_time,'1') return token
def socket(token) : # 验证Token res = Safety.decode(token) if res==None : return {'state':False,'msg':'Token验证失败!'} name = Env.admin_token_prefix+str(res['uid']) # 是否超时 time = Redis.run().ttl(name) if time<=0 : return {'state':False,'msg':'Token已超时!'} res['n_time'] = time return {'state':True,'data':res}
def verify(self) : # 获取Token data = None if request.method=='POST': data=request.form elif request.method=='GET': data=request.args token = data.get('token') # 验证Token res = Safety.decode(token) if res==None : self.error('Token验证失败!') name = Env.admin_token_prefix+str(res['uid']) # 是否超时 time = Redis.run().ttl(name) if time<=0 : self.error('Token已超时!') res['n_time'] = time # 是否续期 if Env.admin_token_auto : Redis.run().setex(name,Env.admin_token_time,'1') return res
def setAction(self, val): if not Safety.test(r'^[a-zA-Z]{2,16}$', val): self.error('命名为2~16位英文!') self.action = val
def setUrl(self,val) : if val!='' and not Safety.test(r'^[a-zA-Z]{2,24}$',val) : self.error('控制器为2~24位英文!') self.action = val
def setEmail(self, val): if val != '': if not Safety.isRight('email', val): self.error('邮箱有误!') self.email = val
def setTel(self, val): if val != '': if not Safety.isRight('tel', val): self.error('手机号码有误!') self.tel = val
def setUname(self, val): if val != '': if not Safety.isRight('uname', val): self.error('用户名英文开头4~16位!') self.uname = val