Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2016
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. # app/controllers/institution_controller.rb
  2. class InstitutionsController < ApplicationController
  3. def create
  4. if uses_intuit?
  5. #existing code
  6. else
  7. service_response = Services::YodleeAccount::Register.call(current_user, params, id)
  8.  
  9. redirect to_some_place_after_success_login and return if service_response[:status] == :complete
  10. render 'mfa_form', mfa_form: service_response[:mfa_form] and return if service_response[:status] == :missing_mfa
  11. render 'fail_registration', error_message: service_response[:error_msg]
  12. end
  13.  
  14. def update_mfa_registration
  15. begin
  16. service_response = Services::YodleeAccount::UpdateMfa.call(current_user.yodlee_user, params, id)
  17. rescue
  18. render 'fail'
  19. end
  20.  
  21. redirect to_some_place_after_success_login
  22. end
  23.  
  24. # app/services/yodlee_account/register.rb
  25. class Services::YodleeAccount::Register < Services::Base
  26. def call(user, provider_id, form_values)
  27. form = create_login_form(form_values)
  28.  
  29. yodlee_user = (user.yodlee_user || Services::YodleeUser::Register.call(user.id))
  30.  
  31. account_id = Yodlee::Api::V1::Provider.new.tap { user_name = yodlee_user.username, user_password = yodlee_user.password }.register_account(form, provider_id)
  32.  
  33. result = Yodlee::Api::V1::Refresher.new.tap { user_name = yodlee_user.username, user_password = yodlee_user.password }.get_status_registration(account_id)
  34.  
  35. return { status: :complete, mfa_form: nil, account_id: account_id } if result.is_registration_completed?
  36. return { status: :missing_mfa, mfa_form: result.mfa_form, account_id: account_id } if result.requires_MFA_login?
  37.  
  38. raise RegistrationError #using the values of result
  39. end
  40. end
  41.  
  42.  
  43. # app/services/yodlee_account/update_mfa.rb
  44. class Services::YodleeAccount::UpdateMfa < Services::Base
  45. def call(yodlee_user, provider_id, form_values)
  46. form = create_mfa_form(form_values)
  47.  
  48. account_id = Yodlee::Api::V1::Provider.new.tap { user_name = yodlee_user.username, user_password = yodlee_user.password }.update_mfa(form, provider_id)
  49.  
  50. result = Yodlee::Api::V1::Refresher.new.tap { user_name = yodlee_user.username, user_password = yodlee_user.password }.get_status_registration(account_id)
  51.  
  52. #I assume that just one request to get MFA fields is needed.
  53. return if result.is_registration_completed?
  54.  
  55. raise RegistrationError #using the values of result
  56. end
  57. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement