def decorator(*args, **kwargs): data = request.json or request.form or request.args user_id = data.get('user_id') if user_id: try: user = UserModel.get(UserModel.id == user_id, UserModel.deleted_at == None) kwargs.update({'user': user}) return f(*args, **kwargs) except UserModel.DoesNotExist as e: raise UserModel.NotFoundError(u'该用户不存在') else: raise UserModel.LackOfFieldError(u'请传入用户ID')
def decorator(*args, **kwargs): from flask import request, current_app from itsdangerous import TimedJSONWebSignatureSerializer, SignatureExpired, BadSignature from backend_common.models.user import User as UserModel data = request.json or request.form or request.args if data.get('token'): token = data.get('token') s = TimedJSONWebSignatureSerializer(current_app.secret_key) try: user_id = s.loads(token) user = UserModel.get(UserModel.id == user_id, UserModel.deleted_at == None) tokens = user.tokens() if token in tokens: kwargs.update({'user': user}) return f(*args, **kwargs) else: raise UserModel.TokenError(u'请重新登录') except SignatureExpired: raise UserModel.TokenError(u'登录已经过期') except BadSignature: raise UserModel.PasswordError() except UserModel.DoesNotExist, e: raise UserModel.NotFoundError(u'该用户不存在')