class OmniAuth::Strategies::Twinfield

Twinfield OmniAuth Strategy; follows OmniAuth::Strategies::OAuth2’s base strategy

Private Class Methods

validate_token(token) click to toggle source

Can’t do a JWT token validation in absence of verification keys

# File lib/omniauth/strategies/twinfield.rb, line 82
def validate_token(token)
  uri = URI.parse("https://login.twinfield.com/auth/authentication/connect/accesstokenvalidation?token=#{token}")
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  request = Net::HTTP::Get.new(uri)
  http_response = http.request(request)

  response = JSON.parse(http_response.body)

  raise InvalidToken, response["Message"] if response["Message"]

  response
end

Public Instance Methods

build_access_token() click to toggle source
# File lib/omniauth/strategies/twinfield.rb, line 57
def build_access_token
  verifier = request.params["code"]

  data = {
    headers: authorization_header,
    code: verifier,
    redirect_uri: callback_url.split(/\?/)[0],
    grant_type: "authorization_code"
  }

  client.auth_code.get_token(verifier, data)
end
info() click to toggle source
# File lib/omniauth/strategies/twinfield.rb, line 45
def info
  raw_info
end
raw_info() click to toggle source
# File lib/omniauth/strategies/twinfield.rb, line 53
def raw_info
  @raw_info ||= self.class.validate_token(access_token.token)
end
refresh_token() click to toggle source
# File lib/omniauth/strategies/twinfield.rb, line 49
def refresh_token
  access_token.to_hash[:refresh_token]
end
request_phase() click to toggle source
# File lib/omniauth/strategies/twinfield.rb, line 37
def request_phase
  redirect client.auth_code.authorize_url({ redirect_uri: callback_url }.merge(authorize_params))
end
uid() click to toggle source
# File lib/omniauth/strategies/twinfield.rb, line 41
def uid
  raw_info["sub"]
end

Private Instance Methods

authorization_header() click to toggle source
# File lib/omniauth/strategies/twinfield.rb, line 72
def authorization_header
  {
    "Authorization" => "Basic #{Base64.encode64("#{options.client_id}:#{options.client_secret}").gsub("\n",
                                                                                                      "")}",
    "User-Agent" => "Twinfield OmniAuth"
  }
end