A behavior for system level callbacks
event() :: map()
state() :: map()
authenticated(state()) :: {:ok, state()}
process(state(), event()) :: {:ok, state()}