class SynapsePayRest::UnverifiedNode

Represents a node that has not yet been created due to pending bank login MFA questions.

Attributes

mfa_access_token[R]

@!attribute [r] user

@return [SynapsePayRest::User] the user to whom the node belongs

@!attribute [r] mfa_access_token

@return [String] access token that must be included in the response (handled automatically)

@!attribute [r] mfa_message

@return [String] question or MFA prompt from bank that must be answered

@!attribute [r] mfa_verified

@return [Boolean] whether the node is verified yet
@todo should be mfa_verified? in Ruby idiom
mfa_message[R]

@!attribute [r] user

@return [SynapsePayRest::User] the user to whom the node belongs

@!attribute [r] mfa_access_token

@return [String] access token that must be included in the response (handled automatically)

@!attribute [r] mfa_message

@return [String] question or MFA prompt from bank that must be answered

@!attribute [r] mfa_verified

@return [Boolean] whether the node is verified yet
@todo should be mfa_verified? in Ruby idiom
mfa_verified[R]

@!attribute [r] user

@return [SynapsePayRest::User] the user to whom the node belongs

@!attribute [r] mfa_access_token

@return [String] access token that must be included in the response (handled automatically)

@!attribute [r] mfa_message

@return [String] question or MFA prompt from bank that must be answered

@!attribute [r] mfa_verified

@return [Boolean] whether the node is verified yet
@todo should be mfa_verified? in Ruby idiom
user[R]

@!attribute [r] user

@return [SynapsePayRest::User] the user to whom the node belongs

@!attribute [r] mfa_access_token

@return [String] access token that must be included in the response (handled automatically)

@!attribute [r] mfa_message

@return [String] question or MFA prompt from bank that must be answered

@!attribute [r] mfa_verified

@return [Boolean] whether the node is verified yet
@todo should be mfa_verified? in Ruby idiom

Public Class Methods

new(user:, mfa_access_token:, mfa_message:, mfa_verified:) click to toggle source
# File lib/synapse_pay_rest/models/node/unverified_node.rb, line 16
def initialize(user:, mfa_access_token:, mfa_message:, mfa_verified:)
  @user             = user
  @mfa_access_token = mfa_access_token
  @mfa_message      = mfa_message
  @mfa_verified     = mfa_verified
end

Public Instance Methods

answer_mfa(answer) click to toggle source

Allows the user to submit an answer to the bank in response to mfa_message.

@param answer [String] the user's answer to the mfa_message asked by the bank

@raise [SynapsePayRest::Error] if incorrect answer

@return [Array<SynapsePayRest::AchUsNode>,SynapsePayRest::UnverifiedNode] may contain multiple nodes if successful, else self if new MFA question to answer

@todo make a new Error subclass for incorrect MFA

# File lib/synapse_pay_rest/models/node/unverified_node.rb, line 32
def answer_mfa(answer)
  payload  = payload_for_answer_mfa(answer: answer)
  response = user.client.nodes.post(user_id: user.id, payload: payload)
  
  handle_answer_mfa_response(response)
end

Private Instance Methods

handle_answer_mfa_response(response) click to toggle source

Determines whether the response is successful in verifying the node, has follow-up MFA questions, or failed with an incorrect answer.

@todo Use Error#code instead of parsing the response for the code.

# File lib/synapse_pay_rest/models/node/unverified_node.rb, line 52
def handle_answer_mfa_response(response)
  if response['error_code'] == '0'
    # correct answer
    @mfa_verified = true
    AchUsNode.multiple_from_response(user, response['nodes'])
  elsif response['error_code'] == '10'
    # wrong answer or new additional MFA question
    @mfa_access_token = response['mfa']['access_token']
    @mfa_message      = response['mfa']['message']
    self
  end
end
payload_for_answer_mfa(answer:) click to toggle source
# File lib/synapse_pay_rest/models/node/unverified_node.rb, line 41
def payload_for_answer_mfa(answer:)
  {
    'access_token' => mfa_access_token,
    'mfa_answer'   => answer
  }
end