Beispiel #1
0
 def wrapper(*args, **kwargs):
     guard = current_guard()
     token = guard.read_token_from_header()
     jwt_data = guard.extract_jwt_token(token)
     add_jwt_data_to_app_context(jwt_data)
     retval = method(*args, **kwargs)
     remove_jwt_data_from_app_context()
     return retval
 def test_app_context_has_jwt_data(self):
     """
     This test verifies that the app_context_has_jwt_data method can
     determine if jwt_data has been added to the app context yet
     """
     assert not app_context_has_jwt_data()
     add_jwt_data_to_app_context({'a': 1})
     assert app_context_has_jwt_data()
     remove_jwt_data_from_app_context()
     assert not app_context_has_jwt_data()
Beispiel #3
0
 def wrapper(*args, **kwargs):
     _verify_and_add_jwt()
     try:
         MissingRoleError.require_condition(
             current_rolenames().issuperset(set(required_rolenames)),
             "This endpoint requires all the following roles: {}",
             [', '.join(required_rolenames)],
         )
         return method(*args, **kwargs)
     finally:
         remove_jwt_data_from_app_context()
Beispiel #4
0
 def wrapper(*args, **kwargs):
     role_set = set([str(n) for n in accepted_rolenames])
     _verify_and_add_jwt()
     try:
         MissingRoleError.require_condition(
             not current_rolenames().isdisjoint(role_set),
             "This endpoint requires one of the following roles: {}",
             [', '.join(role_set)],
         )
         return method(*args, **kwargs)
     finally:
         remove_jwt_data_from_app_context()
Beispiel #5
0
 def wrapper(*args, **kwargs):
     role_set = set([str(n) for n in required_rolenames])
     _verify_and_add_jwt()
     try:
         MissingRoleError.require_condition(
             current_rolenames().issuperset(role_set),
             "This endpoint requires all the following roles: "
             "{}".format([', '.join(role_set)]),
         )
         return method(*args, **kwargs)
     finally:
         remove_jwt_data_from_app_context()
 def test_remove_jwt_data_from_app_context(self):
     """
     This test verifies that jwt data can be removed from an app context.
     It also verifies that attempting to remove the data if it does not
     exist there does not cause an exception
     """
     jwt_data = {'a': 1}
     add_jwt_data_to_app_context(jwt_data)
     assert flask._app_ctx_stack.top.jwt_data == jwt_data
     remove_jwt_data_from_app_context()
     assert not hasattr(flask._app_ctx_stack.top, 'jwt_data')
     remove_jwt_data_from_app_context()
 def wrapper(*args, **kwargs):
     PraetorianError.require_condition(
         not current_guard().roles_disabled,
         "This feature is not available because roles are disabled",
     )
     role_set = set([str(n) for n in required_rolenames])
     _verify_and_add_jwt()
     try:
         MissingRoleError.require_condition(
             current_rolenames().issuperset(role_set),
             "This endpoint requires all the following roles: "
             "{}".format([", ".join(role_set)]),
         )
         return method(*args, **kwargs)
     finally:
         remove_jwt_data_from_app_context()
 def wrapper(*args, **kwargs):
     # TODO put the x-api-key and such in the constants and check if is also found as a query parameter!
     token_store_token_id = request.headers.get('x-api-key', "")
     print(token_store_token_id)
     if token_store_token_id:
         print("found da x-api-key")
         token_store_token = current_token(token_store_token_id)
         print("hydrating a JWT for this api_token")
         #token = {"id":1, "token_name":"my_api", "roles":"admin"}
         encoded_jwt = current_guard().encode_jwt_token(token_store_token,
                                                        is_api=True)
         decoded_jwt = current_guard().extract_jwt_token(encoded_jwt)
         # TODO have the model check for it's enabled, not expired and such using the underlying Token_store model
         add_jwt_data_to_app_context(decoded_jwt)
         try:
             return method(*args, **kwargs)
         finally:
             remove_jwt_data_from_app_context()
     else:
         _verify_and_add_jwt(optional=True)
         try:
             return method(*args, **kwargs)
         finally:
             remove_jwt_data_from_app_context()
Beispiel #9
0
 def wrapper(*args, **kwargs):
     _verify_and_add_jwt()
     try:
         return method(*args, **kwargs)
     finally:
         remove_jwt_data_from_app_context()