docs: def load_auth_token(token, load=True):
      """Validate an auth0 token. Returns the token's payload, or an exception
      of the type:"""
  
      assert get_config().jwt_secret, "No JWT secret configured for pymacaron"
      assert get_config().jwt_issuer, "No JWT issuer configured for pymacaron"
      assert get_config().jwt_audience, "No JWT audience configured for pymacaron"
  
      log.info("Validating token, using issuer:%s, audience:%s, secret:%s***" % (
          get_config().jwt_issuer,
          get_config().jwt_audience,
          get_config().jwt_secret[1:8],
      ))
  
      # First extract the issuer
      issuer = get_config().jwt_issuer
      try:
          headers = jwt.get_unverified_header(token)
      except jwt.DecodeError:
          raise AuthInvalidTokenError('token signature is invalid')
  
      log.debug("Token has headers %s" % headers)
  
      if 'iss' in headers:
          issuer = headers['iss']
  
      # Then validate the token against this issuer
      log.info("Validating token in issuer %s" % issuer)
      try:
          payload = jwt.decode(
              token,
              get_config().jwt_secret,
              audience=get_config().jwt_audience,
              # Allow for a time difference of up to 5min (300sec)
              leeway=300
          )
      except jwt.ExpiredSignature:
          raise AuthTokenExpiredError('Auth token is expired')
      except jwt.InvalidAudienceError:
          raise AuthInvalidTokenError('incorrect audience')
      except jwt.DecodeError:
          raise AuthInvalidTokenError('token signature is invalid')
      except jwt.InvalidIssuedAtError:
          raise AuthInvalidTokenError('Token was issued in the future')
  
      # Save payload to stack
      payload['token'] = token
      payload['iss'] = issuer
  
      if load:
          stack.top.current_user = payload
  
      return payload