class MagentaSSO::Response

A Magenta authentication response

Attributes

client_id[RW]
client_secret[RW]
nonce[RW]
scope_data[RW]
user_data[RW]

Public Class Methods

new(client_id, client_secret, nonce, user_data, scope_data) click to toggle source
# File lib/magentasso.rb, line 93
def initialize(client_id, client_secret, nonce, user_data, scope_data)
  @client_id = client_id
  @client_secret = client_secret
  @nonce = nonce
  @user_data = user_data
  @scope_data = scope_data
end
verify(payload, signature, client_secret) click to toggle source
# File lib/magentasso.rb, line 101
def self.verify(payload, signature, client_secret)
  payload = ::MagentaSSO.verify_and_decode(payload, signature, client_secret)

  new(
    payload["client_id"],
    client_secret,
    payload["nonce"],
    payload["user_data"],
    payload["scope_data"]
  )
end

Public Instance Methods

email_address() click to toggle source
# File lib/magentasso.rb, line 137
def email_address
  @user_data&.[]("email")
end
external_id() click to toggle source
# File lib/magentasso.rb, line 133
def external_id
  @user_data&.[]("external_id")
end
profile_name() click to toggle source
# File lib/magentasso.rb, line 141
def profile_name
  return nil unless @scope_data.key?("profile")

  return [@scope_data["profile"]["name_combined"], nil] if @scope_data["profile"].key?("name_combined")

  [
    @scope_data["profile"]["name_first"],
    @scope_data["profile"]["name_last"]
  ]
end
query_params() click to toggle source
# File lib/magentasso.rb, line 124
def query_params
  payload, signature = sign

  {
    payload: payload,
    signature: signature
  }
end
sign() click to toggle source
# File lib/magentasso.rb, line 113
def sign
  payload = {
    client_id: @client_id,
    nonce: @nonce,
    user_data: @user_data,
    scope_data: @scope_data
  }

  ::MagentaSSO.encode_and_sign(payload, @client_secret)
end