8.6.7. ResponseMangler Handler Module

The ResponseMangler is a special handler module, that can modify the response of an HTTP request. This way eduMFA can change the data sent back to the client, depending on certain conditions.

All actions take a JSON pointer, which looks like a path variable like /result/value.

8.6.7.1. Possible Actions

8.6.7.1.1. delete

This action simply deletes the given JSON pointer from the response.

Note

All keys underneath a node are deleted as well. So if the event handler deletes /detail, the entries /detail/message and /detail/error will also be deleted.

Example

You can use this to delete /detail/googleurl, /detail/oathurl and /detail/otpkey in a /token/init event to hide the created QR code from the helpdesk admin. This way the QR code could be used internally, but could be hidden from the administrator.

8.6.7.1.2. set

This action is used to add additional pointers to the JSON response or to modify existing entries. Existing entries are overwritten.

This action takes the additional attributes type and value.

The value can be returned as a string, an integer or a boolean.

8.6.7.2. Code

This is the event handler module that can mangle the JSON response. We can add or delete key or even subtrees in the JSON response of a request.

The key is identified by a JSON Pointer (see https://tools.ietf.org/html/rfc6901)

class edumfa.lib.eventhandler.responsemangler.ACTION_TYPE[source]

Allowed actions

DELETE = 'delete'
SET = 'set'
class edumfa.lib.eventhandler.responsemangler.ResponseManglerEventHandler[source]

An Eventhandler needs to return a list of actions, which it can handle.

It also returns a list of allowed action and conditions

It returns an identifier, which can be used in the eventhandlig definitions

property actions

This method returns a dictionary of allowed actions and possible options in this handler module.

Returns:

dict with actions

property allowed_positions

This returns the allowed positions of the event handler definition. The ResponseMangler can only be located at the “post” position

Returns:

list of allowed positions

description = 'This event handler can mangle the JSON response.'
do(action, options=None)[source]

This method executes the defined action in the given event.

Parameters:
  • action

  • options (dict) – Contains the flask parameters g, request, response and the handler_def configuration

Returns:

identifier = 'ResponseMangler'