From 45a9db9cd80b2b2bb7e5265fc609e311150ca679 Mon Sep 17 00:00:00 2001 From: Amir Reavis-Bey Date: Fri, 8 Aug 2025 07:36:10 -0700 Subject: [PATCH 1/9] refactor agreements routing to next step --- app/controllers/concerns/idv_step_concern.rb | 10 ++++++++-- app/controllers/idv/agreement_controller.rb | 18 +++--------------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/app/controllers/concerns/idv_step_concern.rb b/app/controllers/concerns/idv_step_concern.rb index 0dfa2373e13..fc6a36186f6 100644 --- a/app/controllers/concerns/idv_step_concern.rb +++ b/app/controllers/concerns/idv_step_concern.rb @@ -64,14 +64,20 @@ def confirm_hybrid_handoff_needed if params[:redo] idv_session.redo_document_capture = true end - # If we previously skipped hybrid handoff, keep doing that. # If hybrid flow is unavailable, skip it. # But don't store that we skipped it in idv_session, in case it is back to # available when the user tries to redo document capture. if idv_session.skip_hybrid_handoff? || !FeatureManagement.idv_allow_hybrid_flow? idv_session.flow_path = 'standard' - redirect_to vendor_document_capture_url + + if idv_session.passport_allowed + redirect_to idv_choose_id_type_url + elsif in_person_proofing_route_enabled? + redirect_to idv_how_to_verify_url + else + redirect_to vendor_document_capture_url + end end end diff --git a/app/controllers/idv/agreement_controller.rb b/app/controllers/idv/agreement_controller.rb index 6638c3ea708..baab87a4d57 100644 --- a/app/controllers/idv/agreement_controller.rb +++ b/app/controllers/idv/agreement_controller.rb @@ -41,22 +41,10 @@ def update if result.success? idv_session.idv_consent_given_at = Time.zone.now + idv_session.opted_in_to_in_person_proofing = false + idv_session.skip_doc_auth_from_how_to_verify = false - if params[:skip_hybrid_handoff] - if in_person_proofing_route_enabled? - redirect_to idv_how_to_verify_url - elsif idv_session.passport_allowed - idv_session.opted_in_to_in_person_proofing = false - idv_session.skip_doc_auth_from_how_to_verify = false - redirect_to idv_choose_id_type_url - else - redirect_to idv_how_to_verify_url - end - else - idv_session.opted_in_to_in_person_proofing = false - idv_session.skip_doc_auth_from_how_to_verify = false - redirect_to idv_hybrid_handoff_url - end + redirect_to idv_hybrid_handoff_url else render :show end From 831ad7c950e565f133abe74c81b4464474345fc2 Mon Sep 17 00:00:00 2001 From: Amir Reavis-Bey Date: Fri, 8 Aug 2025 07:40:10 -0700 Subject: [PATCH 2/9] if ipp go to how to verify --- app/controllers/concerns/idv_step_concern.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/concerns/idv_step_concern.rb b/app/controllers/concerns/idv_step_concern.rb index fc6a36186f6..366eb791558 100644 --- a/app/controllers/concerns/idv_step_concern.rb +++ b/app/controllers/concerns/idv_step_concern.rb @@ -71,10 +71,10 @@ def confirm_hybrid_handoff_needed if idv_session.skip_hybrid_handoff? || !FeatureManagement.idv_allow_hybrid_flow? idv_session.flow_path = 'standard' - if idv_session.passport_allowed - redirect_to idv_choose_id_type_url - elsif in_person_proofing_route_enabled? + if in_person_proofing_route_enabled? redirect_to idv_how_to_verify_url + elsif idv_session.passport_allowed + redirect_to idv_choose_id_type_url else redirect_to vendor_document_capture_url end From 8140552f7067883553c7f076d61fd251747c9d4e Mon Sep 17 00:00:00 2001 From: Amir Reavis-Bey Date: Fri, 8 Aug 2025 07:52:36 -0700 Subject: [PATCH 3/9] should hybrid handoff be in next steps comment --- app/controllers/idv/how_to_verify_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/idv/how_to_verify_controller.rb b/app/controllers/idv/how_to_verify_controller.rb index 867d1d00dc5..744a53a3c4e 100644 --- a/app/controllers/idv/how_to_verify_controller.rb +++ b/app/controllers/idv/how_to_verify_controller.rb @@ -63,7 +63,7 @@ def self.step_info Idv::StepInfo.new( key: :how_to_verify, controller: self, - next_steps: [:choose_id_type, :hybrid_handoff, :document_capture], + next_steps: [:choose_id_type, :hybrid_handoff, :document_capture], # should hybrid handoff be removed? how does it get there? preconditions: ->(idv_session:, user:) do self.enabled? && idv_session.idv_consent_given? && From 50ec6147c2b6e72fde7c1043acd4ad4b097c92be Mon Sep 17 00:00:00 2001 From: Amir Reavis-Bey Date: Fri, 8 Aug 2025 14:08:44 -0700 Subject: [PATCH 4/9] move in_person_proofing_route_enabled to idv step concern --- app/controllers/concerns/idv_step_concern.rb | 9 +++++++++ app/controllers/idv/agreement_controller.rb | 9 --------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/controllers/concerns/idv_step_concern.rb b/app/controllers/concerns/idv_step_concern.rb index 366eb791558..7838fcd8a0b 100644 --- a/app/controllers/concerns/idv_step_concern.rb +++ b/app/controllers/concerns/idv_step_concern.rb @@ -81,6 +81,15 @@ def confirm_hybrid_handoff_needed end end + def in_person_proofing_route_enabled? + IdentityConfig.store.in_person_proofing_enabled && + IdentityConfig.store.in_person_proofing_opt_in_enabled && + IdentityConfig.store.in_person_doc_auth_button_enabled && + Idv::InPersonConfig.enabled_for_issuer?( + decorated_sp_session.sp_issuer, + ) + end + def vendor_document_capture_url case document_capture_session.doc_auth_vendor when Idp::Constants::Vendors::SOCURE, diff --git a/app/controllers/idv/agreement_controller.rb b/app/controllers/idv/agreement_controller.rb index baab87a4d57..4f1dd25ffbc 100644 --- a/app/controllers/idv/agreement_controller.rb +++ b/app/controllers/idv/agreement_controller.rb @@ -73,15 +73,6 @@ def analytics_arguments }.merge(ab_test_analytics_buckets) end - def in_person_proofing_route_enabled? - IdentityConfig.store.in_person_proofing_enabled && - IdentityConfig.store.in_person_proofing_opt_in_enabled && - IdentityConfig.store.in_person_doc_auth_button_enabled && - Idv::InPersonConfig.enabled_for_issuer?( - decorated_sp_session.sp_issuer, - ) - end - def skip_to_capture idv_session.flow_path = 'standard' From 9424b266af393b06ecabba52bbbcb35482fc7875 Mon Sep 17 00:00:00 2001 From: Amir Reavis-Bey Date: Tue, 19 Aug 2025 16:43:06 -0700 Subject: [PATCH 5/9] agreements page routes hybrid handoff --- spec/controllers/idv/agreement_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/controllers/idv/agreement_controller_spec.rb b/spec/controllers/idv/agreement_controller_spec.rb index b61499d5cae..b2aa16a4a9b 100644 --- a/spec/controllers/idv/agreement_controller_spec.rb +++ b/spec/controllers/idv/agreement_controller_spec.rb @@ -197,7 +197,7 @@ it 'redirects to how to verify' do put :update, params: params - expect(response).to redirect_to(idv_how_to_verify_url) + expect(response).to redirect_to(idv_hybrid_handoff_url) end it 'sets an idv_consent_given_at timestamp' do From 3ce43982da25e11cde742740a79d89e6cd67728f Mon Sep 17 00:00:00 2001 From: Amir Reavis-Bey Date: Tue, 19 Aug 2025 17:38:16 -0700 Subject: [PATCH 6/9] test confirm_hybrid_needed --- .../concerns/idv_step_concern_spec.rb | 47 ++++++++++++++++++- .../idv/agreement_controller_spec.rb | 2 +- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/spec/controllers/concerns/idv_step_concern_spec.rb b/spec/controllers/concerns/idv_step_concern_spec.rb index fe472b1794c..16a808d3133 100644 --- a/spec/controllers/concerns/idv_step_concern_spec.rb +++ b/spec/controllers/concerns/idv_step_concern_spec.rb @@ -75,16 +75,61 @@ def show context 'previously skipped hybrid handoff' do before do idv_session.skip_hybrid_handoff = true - get :show end it 'sets flow_path to standard' do + get :show + expect(idv_session.flow_path).to eql('standard') end it 'redirects to document capture' do + get :show + expect(response).to redirect_to(idv_document_capture_url) end + + context 'when IPP proofing route is enabled' do + before do + allow(IdentityConfig.store).to receive(:in_person_proofing_enabled).and_return(true) + allow(IdentityConfig.store).to receive(:in_person_proofing_opt_in_enabled).and_return(true) + allow(IdentityConfig.store).to receive(:in_person_doc_auth_button_enabled).and_return(true) + allow(Idv::InPersonConfig).to receive(:enabled_for_issuer?).and_return(true) + end + + it 'redirects to how to verify' do + get :show + + expect(response).to redirect_to(idv_how_to_verify_url) + end + end + + context 'when passport is allowed' do + before do + idv_session.passport_allowed = true + end + + it 'redirects to choose id type' do + get :show + + expect(response).to redirect_to(idv_choose_id_type_url) + end + + context 'when IPP proofing route is enabled' do + before do + allow(IdentityConfig.store).to receive(:in_person_proofing_enabled).and_return(true) + allow(IdentityConfig.store).to receive(:in_person_proofing_opt_in_enabled).and_return(true) + allow(IdentityConfig.store).to receive(:in_person_doc_auth_button_enabled).and_return(true) + allow(Idv::InPersonConfig).to receive(:enabled_for_issuer?).and_return(true) + end + + it 'redirects to how to verify' do + get :show + + expect(response).to redirect_to(idv_how_to_verify_url) + end + end + end end context 'hybrid flow not available' do diff --git a/spec/controllers/idv/agreement_controller_spec.rb b/spec/controllers/idv/agreement_controller_spec.rb index b2aa16a4a9b..573b4c0a494 100644 --- a/spec/controllers/idv/agreement_controller_spec.rb +++ b/spec/controllers/idv/agreement_controller_spec.rb @@ -194,7 +194,7 @@ }.from(nil).to(true) end - it 'redirects to how to verify' do + it 'redirects to hybrid handoff' do put :update, params: params expect(response).to redirect_to(idv_hybrid_handoff_url) From 9c1a362bedb8daba46085f048d7234eb5a4f9b5c Mon Sep 17 00:00:00 2001 From: Amir Reavis-Bey Date: Tue, 19 Aug 2025 17:40:31 -0700 Subject: [PATCH 7/9] happy linting --- spec/controllers/concerns/idv_step_concern_spec.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/spec/controllers/concerns/idv_step_concern_spec.rb b/spec/controllers/concerns/idv_step_concern_spec.rb index 16a808d3133..8c6958b3b92 100644 --- a/spec/controllers/concerns/idv_step_concern_spec.rb +++ b/spec/controllers/concerns/idv_step_concern_spec.rb @@ -92,8 +92,10 @@ def show context 'when IPP proofing route is enabled' do before do allow(IdentityConfig.store).to receive(:in_person_proofing_enabled).and_return(true) - allow(IdentityConfig.store).to receive(:in_person_proofing_opt_in_enabled).and_return(true) - allow(IdentityConfig.store).to receive(:in_person_doc_auth_button_enabled).and_return(true) + allow(IdentityConfig.store).to receive(:in_person_proofing_opt_in_enabled) + .and_return(true) + allow(IdentityConfig.store).to receive(:in_person_doc_auth_button_enabled) + .and_return(true) allow(Idv::InPersonConfig).to receive(:enabled_for_issuer?).and_return(true) end @@ -118,8 +120,10 @@ def show context 'when IPP proofing route is enabled' do before do allow(IdentityConfig.store).to receive(:in_person_proofing_enabled).and_return(true) - allow(IdentityConfig.store).to receive(:in_person_proofing_opt_in_enabled).and_return(true) - allow(IdentityConfig.store).to receive(:in_person_doc_auth_button_enabled).and_return(true) + allow(IdentityConfig.store).to receive(:in_person_proofing_opt_in_enabled) + .and_return(true) + allow(IdentityConfig.store).to receive(:in_person_doc_auth_button_enabled) + .and_return(true) allow(Idv::InPersonConfig).to receive(:enabled_for_issuer?).and_return(true) end From 09c6d59027b2c8dcd7af5bf83f56c0e516f6f028 Mon Sep 17 00:00:00 2001 From: Amir Reavis-Bey Date: Tue, 19 Aug 2025 21:53:53 -0400 Subject: [PATCH 8/9] remove hybrid handoff for next steps --- app/controllers/idv/how_to_verify_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/idv/how_to_verify_controller.rb b/app/controllers/idv/how_to_verify_controller.rb index 744a53a3c4e..1e236b0759e 100644 --- a/app/controllers/idv/how_to_verify_controller.rb +++ b/app/controllers/idv/how_to_verify_controller.rb @@ -63,7 +63,7 @@ def self.step_info Idv::StepInfo.new( key: :how_to_verify, controller: self, - next_steps: [:choose_id_type, :hybrid_handoff, :document_capture], # should hybrid handoff be removed? how does it get there? + next_steps: [:choose_id_type, :document_capture], preconditions: ->(idv_session:, user:) do self.enabled? && idv_session.idv_consent_given? && From 6ef16f74d0d2aa6939b7a1542ae84eda946318d8 Mon Sep 17 00:00:00 2001 From: Amir Reavis-Bey Date: Tue, 19 Aug 2025 21:54:26 -0400 Subject: [PATCH 9/9] changelog: Internal, Document Authentication, Refactor routing from Agreements to DocAuth