def login(self): #GET请求时,opt为login时只行该方法 loginParser = self.parser.copy() loginParser.add_argument('name', required=True, help='必须提供用户名') loginParser.add_argument('password', required=True, help='必须提供密码') args = loginParser.parse_args() #验证数据 name = args.get('name') password = md5_crypt(args.get('password')) user = dao.query(User).filter( db.and_(User.name == name, User.password == password, User.is_active == True, User.is_life == True)).first() print(user) if user: user.last_login_time = datetime.datetime.now() dao.save(user) user_fields = { 'id': fields.Integer, 'name': fields.String, 'phone': fields.String, 'nickName': fields.String, 'email': fields.String } out_fields = { 'msg': fields.String, 'token': fields.String, 'data': fields.Nested(user_fields) } #如果用户登录成功,session存入{token:userid} token = helper.md5_crypt(str(uuid.uuid4())) session[token] = user.id data = {'msg': '您已登陆成功', 'token': token, 'data': user} return marshal(data, out_fields) else: return {'msg': '用户名或密码错误'}
def get(self): # 验证用户名是否已经注册 args = self.parser.parse_args() name = args['name'] qs = dao.query(User).filter(User.name == name) if qs.count(): return {'status': 202, 'msg': name + '用户名被注册'} return {'status': 200, 'msg': name + '用户名可以注册'}
def reactive(self): parser = reqparse.RequestParser() parser.add_argument('email', required=True, help='必须提供邮箱') args = parser.parse_args() email = args.get('email') qs = dao.query(User).filter(User.email.__eq__(email)) if not qs.count(): return {'status': 661, 'msg': '该邮箱未注册'} helper.sendEmail(qs.first()) return {'msg': '重写申请用户激活成功,请去邮箱查收'}
def get(self): args = self.parse.parse_args() city = args.get('city') sort = args.get('sort') qs: BaseQuery = dao.query(Cinemas).filter(Cinemas.city == city) cinemas2: BaseQuery = qs.order_by(('-' if sort else '') + args.get('order_by')) page = cinemas2.paginate(args.get('page'), args.get('limit')) print('当前城市的总影院数', cinemas2.count()) return {'status': 200, 'msg': "ok", 'data': page.items}
def get(self): #验证用户名是否已注册 args=self.parser.parse_args() name=args.get('name') qs=dao.query(User).filter(User.name==name) if qs.count(): return {'status':202,'msg':name+'用户名已被注册'} return {'status': 200, 'msg': name + '用户名注册成功'}
def wrapper(*args, **kwargs): print('-check login--') token = request.args.get('token') user_id = session.get(token) if not user_id: return {'msg': '用户必须先登录'} loginUser = dao.getById(User, user_id) if loginUser.rights & qx == qx: return fun(*args, **kwargs) else: qxObj = dao.query(Qx).filter(Qx.right == qx).first() return {'msg': '用户没有 {} 权限'.format(qxObj.name)}
def action(*args, **kwargs): #获取用户的token,{token:id},从request中传来的 token = request.args.get('token') u_id = session.get(token) if not u_id: return {'msg': '请先登录'} user: User = dao.getById(User, u_id) # 用户要执行什么操作 opt = dao.query(Qx).filter(Qx.right == caozuo).first() # 拿用户的权限和settings中的权限值做&操作 if not user.reghts & caozuo == caozuo: return {'msg': '对不起您不具备{}权限'.format(opt.name)} return fn(*args, **kwargs)
def reactive(self): # 重新申请用户激活 reactiveParser = self.parser.copy() reactiveParser.add_argument('email', required=True, help='必须提供邮箱') args = reactiveParser.parse_args() email = args.get('email') qs = dao.query(User).filter(User.email.__eq__(email)) if not qs.count(): return {'status': 700, 'msg': email + '邮箱未被注册'} # 重新发送邮箱 helper.sendEmail(qs.first()) return {'msg': '重新申请用户激活成功,注意查收邮箱进行激活'}
def get(self): # 验证请求参数 args = self.parser.parse_args() qs: BaseQuery = dao.query(Movies).filter( Movies.flag == args.get('flag')) sort = args.get('sort') qs: BaseQuery = qs.order_by(('-' if sort == 1 else '') + args.get('orderby')) # 分页 pager = qs.paginate(args.get('page'), args.get('limit')) print('获取的总影片数:', len(qs.all())) return {"returnValue": pager.items}
def login(self): # GET请求时,opt为login时 loginParser = self.parser.copy() loginParser.add_argument('name', required=True, help='需提供name') loginParser.add_argument('passwd', required=True, help='需提供口令') # 验证登录参数 args = loginParser.parse_args() username = args.get('name') password = args.get('passwd') # 查询用户(额外添加一条件:用户已激活) print(username, password) qs = dao.query(User).filter( User.name.__eq__(username), User.password.__eq__(helper.md5_crypt(password)), User.is_active == True, User.is_life == True) if not qs.count(): return {'status': 600, 'msg': '用户登录失败,用户名或口令不正确!'} u: User = qs.first() u.last_login_time = datetime.today() dao.save(u) # 更新用户登录的时间 token = helper.getToken() print('skdjfksdfksdkfh', token) session[token] = u.id # 将token存放session中 print('++++++++++', session.get(token)) out_user_fields = { 'name': fields.String, 'email': fields.String, 'phone': fields.String, 'photo': fields.String(attribute='photo_1') } out_fields = { 'msg': fields.String, 'data': fields.Nested(out_user_fields), 'access_token': fields.String } data = {'msg': '登录成功!', 'data': u, 'access_token': token} # 通过marshal 将返回的data数据按输出字段转成json字符 return marshal(data, out_fields)
def get(self): args = self.parser.parse_args() qs: BaseQuery = dao.query(Movies).filter( Movies.flag == args.get('flag')) sort = args.get('sort') #排序 qs: BaseQuery = qs.order_by(('-' if sort == 1 else '') + args.get('orderby')) #分页 pager = qs.paginate(args.get('page'), args.get('limit')) print('获取的总影片数', len(qs.all())) data = { 'status': 200, 'msg': '所有电影', #pager.items 表示当前页的数据 'data': pager.items } return marshal(data, self.out_fields)
def reactive(self): reactiveParser = self.parser.copy() reactiveParser.add_argument('email', required=True, help='邮箱不能空') args = reactiveParser.parse_args() email = args.get('email') qs = dao.query(User).filter(User.email.__eq__(email)) if not qs.count(): return {'status': 666, 'msg': email + '邮箱未被注册'} print('request.host_url', request.host_url) print('request.path', request.path) print('request.url', request.url) print('request.base_url', request) url = request.host_url # 重新发送邮件 tasks.sendMail.delay(qs.first().id, url) print(qs.first().id) return {'mag': '重新申请用户激活,请查收邮箱'}