diff --git a/app/controllers/concerns/two_factor_authenticatable_methods.rb b/app/controllers/concerns/two_factor_authenticatable_methods.rb index 5e686a8eda5..3c40febf00e 100644 --- a/app/controllers/concerns/two_factor_authenticatable_methods.rb +++ b/app/controllers/concerns/two_factor_authenticatable_methods.rb @@ -314,6 +314,7 @@ def presenter_for_two_factor_authentication_method TwoFactorAuthCode.const_get("#{type}_delivery_presenter".classify).new( data: data, view: view_context, + service_provider: current_sp, remember_device_default: remember_device_default, ) end diff --git a/app/controllers/two_factor_authentication/backup_code_verification_controller.rb b/app/controllers/two_factor_authentication/backup_code_verification_controller.rb index c4513e31151..c3d97880c11 100644 --- a/app/controllers/two_factor_authentication/backup_code_verification_controller.rb +++ b/app/controllers/two_factor_authentication/backup_code_verification_controller.rb @@ -12,6 +12,7 @@ def show @presenter = TwoFactorAuthCode::BackupCodePresenter.new( view: view_context, data: { current_user: current_user }, + service_provider: current_sp, remember_device_default: remember_device_default, ) @backup_code_form = BackupCodeVerificationForm.new(current_user) @@ -43,6 +44,7 @@ def presenter_for_two_factor_authentication_method TwoFactorAuthCode::BackupCodePresenter.new( view: view_context, data: { current_user: current_user }, + service_provider: current_sp, ) end diff --git a/app/controllers/two_factor_authentication/piv_cac_verification_controller.rb b/app/controllers/two_factor_authentication/piv_cac_verification_controller.rb index 102d401cc88..587e78a61f6 100644 --- a/app/controllers/two_factor_authentication/piv_cac_verification_controller.rb +++ b/app/controllers/two_factor_authentication/piv_cac_verification_controller.rb @@ -91,6 +91,7 @@ def presenter_for_two_factor_authentication_method TwoFactorAuthCode::PivCacAuthenticationPresenter.new( view: view_context, data: piv_cac_view_data, + service_provider: current_sp, remember_device_default: remember_device_default, ) end diff --git a/app/controllers/two_factor_authentication/webauthn_verification_controller.rb b/app/controllers/two_factor_authentication/webauthn_verification_controller.rb index 450eda19cfa..13a7e2faa8b 100644 --- a/app/controllers/two_factor_authentication/webauthn_verification_controller.rb +++ b/app/controllers/two_factor_authentication/webauthn_verification_controller.rb @@ -80,6 +80,7 @@ def presenter_for_two_factor_authentication_method view: view_context, data: { credential_ids: credential_ids, user_opted_remember_device_cookie: user_opted_remember_device_cookie }, + service_provider: current_sp, remember_device_default: remember_device_default, platform_authenticator: params[:platform].to_s == 'true', ) diff --git a/app/presenters/two_factor_auth_code/generic_delivery_presenter.rb b/app/presenters/two_factor_auth_code/generic_delivery_presenter.rb index cc86ba693a1..e83e7ef1240 100644 --- a/app/presenters/two_factor_auth_code/generic_delivery_presenter.rb +++ b/app/presenters/two_factor_auth_code/generic_delivery_presenter.rb @@ -6,11 +6,12 @@ class GenericDeliveryPresenter attr_reader :code_value, :reauthn - def initialize(data:, view:, remember_device_default: true) + def initialize(data:, view:, service_provider:, remember_device_default: true) data.each do |key, value| instance_variable_set("@#{key}", value) end @view = view + @service_provider = service_provider @remember_device_default = remember_device_default end @@ -52,7 +53,7 @@ def url_options def service_provider_mfa_policy @service_provider_mfa_policy ||= ServiceProviderMfaPolicy.new( user: @view.current_user, - service_provider: ServiceProvider.find_by(issuer: @view.sp_session[:issuer]), + service_provider: @service_provider, auth_method: @view.user_session[:auth_method], aal_level_requested: @view.sp_session[:aal_level_requested], piv_cac_requested: @view.sp_session[:piv_cac_requested], diff --git a/app/presenters/two_factor_auth_code/webauthn_authentication_presenter.rb b/app/presenters/two_factor_auth_code/webauthn_authentication_presenter.rb index 2f4ab3d6fb9..fd3ce3f6afc 100644 --- a/app/presenters/two_factor_auth_code/webauthn_authentication_presenter.rb +++ b/app/presenters/two_factor_auth_code/webauthn_authentication_presenter.rb @@ -5,9 +5,15 @@ class WebauthnAuthenticationPresenter < TwoFactorAuthCode::GenericDeliveryPresen attr_reader :credential_ids, :user_opted_remember_device_cookie - def initialize(data:, view:, remember_device_default: true, platform_authenticator: false) + def initialize(data:, view:, service_provider:, remember_device_default: true, + platform_authenticator: false) @platform_authenticator = platform_authenticator - super(data: data, view: view, remember_device_default: remember_device_default) + super( + data: data, + view: view, + service_provider: service_provider, + remember_device_default: remember_device_default, + ) end def webauthn_help diff --git a/spec/controllers/two_factor_authentication/otp_verification_controller_spec.rb b/spec/controllers/two_factor_authentication/otp_verification_controller_spec.rb index 4af597bf5fa..fe7e0989e79 100644 --- a/spec/controllers/two_factor_authentication/otp_verification_controller_spec.rb +++ b/spec/controllers/two_factor_authentication/otp_verification_controller_spec.rb @@ -13,6 +13,7 @@ TwoFactorAuthCode::PhoneDeliveryPresenter.new( data: presenter_data, view: ActionController::Base.new.view_context, + service_provider: nil, ) allow(FeatureManagement).to receive(:prefill_otp_codes?).and_return(true) diff --git a/spec/presenters/two_factor_auth_code/authenticator_delivery_presenter_spec.rb b/spec/presenters/two_factor_auth_code/authenticator_delivery_presenter_spec.rb index 7eeb436c35b..6d93388fbda 100644 --- a/spec/presenters/two_factor_auth_code/authenticator_delivery_presenter_spec.rb +++ b/spec/presenters/two_factor_auth_code/authenticator_delivery_presenter_spec.rb @@ -4,7 +4,7 @@ let(:view) { ActionController::Base.new.view_context } let(:presenter) do TwoFactorAuthCode::AuthenticatorDeliveryPresenter. - new(data: {}, view: view) + new(data: {}, view: view, service_provider: nil) end describe '#header' do diff --git a/spec/presenters/two_factor_auth_code/backup_code_presenter_spec.rb b/spec/presenters/two_factor_auth_code/backup_code_presenter_spec.rb index c925f9f3033..edd7edd6a70 100644 --- a/spec/presenters/two_factor_auth_code/backup_code_presenter_spec.rb +++ b/spec/presenters/two_factor_auth_code/backup_code_presenter_spec.rb @@ -6,7 +6,7 @@ let(:presenter) do arguments = {} view = ActionController::Base.new.view_context - TwoFactorAuthCode::BackupCodePresenter.new(data: arguments, view: view) + TwoFactorAuthCode::BackupCodePresenter.new(data: arguments, view: view, service_provider: nil) end describe '#fallback_question' do diff --git a/spec/presenters/two_factor_auth_code/generic_delivery_presenter_spec.rb b/spec/presenters/two_factor_auth_code/generic_delivery_presenter_spec.rb index acdc077c739..1c41ee35053 100644 --- a/spec/presenters/two_factor_auth_code/generic_delivery_presenter_spec.rb +++ b/spec/presenters/two_factor_auth_code/generic_delivery_presenter_spec.rb @@ -12,6 +12,10 @@ end def presenter_with(arguments = {}, view = ActionController::Base.new.view_context) - TwoFactorAuthCode::GenericDeliveryPresenter.new(data: arguments, view: view) + TwoFactorAuthCode::GenericDeliveryPresenter.new( + data: arguments, + view: view, + service_provider: nil, + ) end end diff --git a/spec/presenters/two_factor_auth_code/phone_delivery_presenter_spec.rb b/spec/presenters/two_factor_auth_code/phone_delivery_presenter_spec.rb index 6f9db363472..25afbc384b9 100644 --- a/spec/presenters/two_factor_auth_code/phone_delivery_presenter_spec.rb +++ b/spec/presenters/two_factor_auth_code/phone_delivery_presenter_spec.rb @@ -20,6 +20,7 @@ TwoFactorAuthCode::PhoneDeliveryPresenter.new( data: data, view: view, + service_provider: nil, ) end diff --git a/spec/presenters/two_factor_auth_code/piv_cac_authentication_presenter_spec.rb b/spec/presenters/two_factor_auth_code/piv_cac_authentication_presenter_spec.rb index f8cece85e93..d3ac04af0e6 100644 --- a/spec/presenters/two_factor_auth_code/piv_cac_authentication_presenter_spec.rb +++ b/spec/presenters/two_factor_auth_code/piv_cac_authentication_presenter_spec.rb @@ -4,10 +4,6 @@ include Rails.application.routes.url_helpers include ActionView::Helpers::TagHelper - def presenter_with(arguments = {}, view = ActionController::Base.new.view_context) - TwoFactorAuthCode::PivCacAuthenticationPresenter.new(data: arguments, view: view) - end - let(:user_email) { 'user@example.com' } let(:reauthn) {} let(:presenter) { presenter_with(reauthn: reauthn, user_email: user_email) } @@ -172,6 +168,10 @@ def presenter_with(arguments = {}, view = ActionController::Base.new.view_contex end def presenter_with(arguments = {}, view = ActionController::Base.new.view_context) - TwoFactorAuthCode::PivCacAuthenticationPresenter.new(data: arguments, view: view) + TwoFactorAuthCode::PivCacAuthenticationPresenter.new( + data: arguments, + view: view, + service_provider: nil, + ) end end diff --git a/spec/presenters/two_factor_auth_code/webauthn_authentication_presenter_spec.rb b/spec/presenters/two_factor_auth_code/webauthn_authentication_presenter_spec.rb index d6805c480d4..2488152a5d4 100644 --- a/spec/presenters/two_factor_auth_code/webauthn_authentication_presenter_spec.rb +++ b/spec/presenters/two_factor_auth_code/webauthn_authentication_presenter_spec.rb @@ -7,7 +7,8 @@ let(:reauthn) {} let(:presenter) do TwoFactorAuthCode::WebauthnAuthenticationPresenter. - new(data: { reauthn: reauthn }, view: view, platform_authenticator: platform_authenticator) + new(data: { reauthn: reauthn }, service_provider: nil, + view: view, platform_authenticator: platform_authenticator) end let(:allow_user_to_switch_method) { false } diff --git a/spec/views/two_factor_authentication/otp_verification/show.html.erb_spec.rb b/spec/views/two_factor_authentication/otp_verification/show.html.erb_spec.rb index 062859c7572..686ac9b946c 100644 --- a/spec/views/two_factor_authentication/otp_verification/show.html.erb_spec.rb +++ b/spec/views/two_factor_authentication/otp_verification/show.html.erb_spec.rb @@ -21,6 +21,7 @@ @presenter = TwoFactorAuthCode::PhoneDeliveryPresenter.new( data: presenter_data, view: view, + service_provider: nil, ) allow(@presenter).to receive(:reauthn).and_return(false) end @@ -115,6 +116,7 @@ @presenter = TwoFactorAuthCode::PhoneDeliveryPresenter.new( data: data, view: view, + service_provider: nil, ) render @@ -132,6 +134,7 @@ @presenter = TwoFactorAuthCode::PhoneDeliveryPresenter.new( data: totp_data, view: view, + service_provider: nil, ) render @@ -189,6 +192,7 @@ @presenter = TwoFactorAuthCode::PhoneDeliveryPresenter.new( data: voice_data, view: view, + service_provider: nil, ) end @@ -225,6 +229,7 @@ @presenter = TwoFactorAuthCode::PhoneDeliveryPresenter.new( data: data, view: view, + service_provider: nil, ) render @@ -240,6 +245,7 @@ @presenter = TwoFactorAuthCode::PhoneDeliveryPresenter.new( data: data, view: view, + service_provider: nil, ) render diff --git a/spec/views/two_factor_authentication/totp_verification/show.html.erb_spec.rb b/spec/views/two_factor_authentication/totp_verification/show.html.erb_spec.rb index 0f5c70b5e65..a7bbe88cc24 100644 --- a/spec/views/two_factor_authentication/totp_verification/show.html.erb_spec.rb +++ b/spec/views/two_factor_authentication/totp_verification/show.html.erb_spec.rb @@ -13,7 +13,7 @@ before do allow(view).to receive(:current_user).and_return(user) @presenter = TwoFactorAuthCode::AuthenticatorDeliveryPresenter.new( - data: presenter_data, view: ActionController::Base.new.view_context, + data: presenter_data, view: ActionController::Base.new.view_context, service_provider: nil, ) allow(@presenter).to receive(:reauthn).and_return(false) diff --git a/spec/views/users/totp_setup/new.html.erb_spec.rb b/spec/views/users/totp_setup/new.html.erb_spec.rb index 0605d674b3f..de210715e02 100644 --- a/spec/views/users/totp_setup/new.html.erb_spec.rb +++ b/spec/views/users/totp_setup/new.html.erb_spec.rb @@ -64,6 +64,7 @@ @presenter = TwoFactorAuthCode::AuthenticatorDeliveryPresenter.new( view: view, data: { current_user: user }, + service_provider: nil, ) render