Esempio n. 1
0
    def decorated(*args, **kwargs):
        token = None
        header_name = authorizations['APITokenHeader']['name']

        if header_name in request.headers:
            token = request.headers[header_name]

        if not token:
            return {'message': 'Необходим токен для выполнения операции.'}, 401

        is_success, result = User.decode_auth_token(token)
        if is_success and result['sub'] == kwargs['username']:
            token = Token.query.filter_by(id=result['id']).first()

            if not token.is_revoked:
                return f(*args, **kwargs)
            else:
                return {'message': 'Токен был аннулирован.'}, 401
        elif is_success:
            return {'message': 'Необходим токен владельца проекта.'}, 401
        else:
            return {'message': result}, 401