diff --git a/app/controllers/idv/agreement_controller.rb b/app/controllers/idv/agreement_controller.rb index 7537ccc5c6d..3a4b052d757 100644 --- a/app/controllers/idv/agreement_controller.rb +++ b/app/controllers/idv/agreement_controller.rb @@ -18,7 +18,7 @@ def show ) @consent_form = Idv::ConsentForm.new( - idv_consent_given: idv_session.idv_consent_given, + idv_consent_given: idv_session.idv_consent_given?, ) end @@ -27,7 +27,7 @@ def update skip_to_capture if params[:skip_hybrid_handoff] @consent_form = Idv::ConsentForm.new( - idv_consent_given: idv_session.idv_consent_given, + idv_consent_given: idv_session.idv_consent_given?, ) result = @consent_form.submit(consent_form_params) @@ -57,7 +57,7 @@ def self.step_info next_steps: [:hybrid_handoff, :document_capture, :how_to_verify], preconditions: ->(idv_session:, user:) { idv_session.welcome_visited }, undo_step: ->(idv_session:, user:) do - idv_session.idv_consent_given = nil + idv_session.idv_consent_given_at = nil idv_session.skip_hybrid_handoff = nil end, ) diff --git a/app/controllers/idv/document_capture_controller.rb b/app/controllers/idv/document_capture_controller.rb index 9815f85d5d4..b6e456ce0d3 100644 --- a/app/controllers/idv/document_capture_controller.rb +++ b/app/controllers/idv/document_capture_controller.rb @@ -119,7 +119,7 @@ def handle_stored_result def allow_direct_ipp? return false unless idv_session.welcome_visited && - idv_session.idv_consent_given + idv_session.idv_consent_given? # not allowed when no step param and action:show(get request) return false if params[:step].blank? || params[:action].to_s != 'show' || idv_session.flow_path == 'hybrid' diff --git a/app/controllers/idv/how_to_verify_controller.rb b/app/controllers/idv/how_to_verify_controller.rb index 2e1bb568966..bccd8f12c71 100644 --- a/app/controllers/idv/how_to_verify_controller.rb +++ b/app/controllers/idv/how_to_verify_controller.rb @@ -61,7 +61,7 @@ def self.step_info next_steps: [:hybrid_handoff, :document_capture], preconditions: ->(idv_session:, user:) do self.enabled? && - idv_session.idv_consent_given && + idv_session.idv_consent_given? && idv_session.service_provider&.in_person_proofing_enabled end, undo_step: ->(idv_session:, user:) { diff --git a/app/controllers/idv/hybrid_handoff_controller.rb b/app/controllers/idv/hybrid_handoff_controller.rb index a2962162474..ae41a608240 100644 --- a/app/controllers/idv/hybrid_handoff_controller.rb +++ b/app/controllers/idv/hybrid_handoff_controller.rb @@ -61,7 +61,7 @@ def self.step_info controller: self, next_steps: [:link_sent, :document_capture], preconditions: ->(idv_session:, user:) { - idv_session.idv_consent_given && + idv_session.idv_consent_given? && (self.selected_remote(idv_session: idv_session) || # from opt-in screen # back from ipp doc capture screen idv_session.skip_doc_auth_from_handoff) diff --git a/app/services/idv/session.rb b/app/services/idv/session.rb index e1c12d0e067..bb0a114ff75 100644 --- a/app/services/idv/session.rb +++ b/app/services/idv/session.rb @@ -296,6 +296,10 @@ def desktop_selfie_test_mode_enabled? IdentityConfig.store.doc_auth_selfie_desktop_test_mode end + def idv_consent_given? + !!session[:idv_consent_given_at] + end + private attr_reader :user_session diff --git a/spec/controllers/idv/address_controller_spec.rb b/spec/controllers/idv/address_controller_spec.rb index f501d313208..9a42b6aab75 100644 --- a/spec/controllers/idv/address_controller_spec.rb +++ b/spec/controllers/idv/address_controller_spec.rb @@ -9,7 +9,7 @@ stub_sign_in(user) stub_analytics subject.idv_session.welcome_visited = true - subject.idv_session.idv_consent_given = true + subject.idv_session.idv_consent_given_at = Time.zone.now subject.idv_session.flow_path = 'standard' subject.idv_session.pii_from_doc = pii_from_doc end diff --git a/spec/controllers/idv/agreement_controller_spec.rb b/spec/controllers/idv/agreement_controller_spec.rb index 2eaced54ad0..1405003e49a 100644 --- a/spec/controllers/idv/agreement_controller_spec.rb +++ b/spec/controllers/idv/agreement_controller_spec.rb @@ -238,7 +238,7 @@ it 'does not set IDV consent flags' do put :update, params: params - expect(subject.idv_session.idv_consent_given).to be_nil + expect(subject.idv_session.idv_consent_given?).to eq(false) expect(subject.idv_session.idv_consent_given_at).to be_nil end end diff --git a/spec/controllers/idv/enter_password_controller_spec.rb b/spec/controllers/idv/enter_password_controller_spec.rb index a8e760ce11e..0f909f2f5b6 100644 --- a/spec/controllers/idv/enter_password_controller_spec.rb +++ b/spec/controllers/idv/enter_password_controller_spec.rb @@ -27,8 +27,8 @@ allow(IdentityConfig.store).to receive(:usps_mock_fallback).and_return(false) allow(subject).to receive(:ab_test_analytics_buckets).and_return(ab_test_args) subject.idv_session.welcome_visited = true + subject.idv_session.idv_consent_given_at = Time.zone.now subject.idv_session.proofing_started_at = 5.minutes.ago.iso8601 - subject.idv_session.idv_consent_given = true subject.idv_session.flow_path = 'standard' subject.idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT) subject.idv_session.ssn = Idp::Constants::MOCK_IDV_APPLICANT_WITH_PHONE[:ssn] diff --git a/spec/controllers/idv/how_to_verify_controller_spec.rb b/spec/controllers/idv/how_to_verify_controller_spec.rb index 758371dafc8..533531bd55e 100644 --- a/spec/controllers/idv/how_to_verify_controller_spec.rb +++ b/spec/controllers/idv/how_to_verify_controller_spec.rb @@ -18,7 +18,7 @@ allow(subject).to receive(:ab_test_analytics_buckets).and_return(ab_test_args) allow(subject.idv_session).to receive(:service_provider).and_return(service_provider) subject.idv_session.welcome_visited = true - subject.idv_session.idv_consent_given = true + subject.idv_session.idv_consent_given_at = Time.zone.now end describe 'before_actions' do @@ -133,7 +133,7 @@ context 'agreement step not completed' do before do - subject.idv_session.idv_consent_given = nil + subject.idv_session.idv_consent_given_at = nil end it 'redirects to agreement path' do diff --git a/spec/controllers/idv/hybrid_handoff_controller_spec.rb b/spec/controllers/idv/hybrid_handoff_controller_spec.rb index 4c7ae265c70..dcde07b2842 100644 --- a/spec/controllers/idv/hybrid_handoff_controller_spec.rb +++ b/spec/controllers/idv/hybrid_handoff_controller_spec.rb @@ -91,7 +91,7 @@ context 'agreement step is not complete' do before do - subject.idv_session.idv_consent_given = nil + subject.idv_session.idv_consent_given_at = nil end it 'redirects to idv_agreement_url' do diff --git a/spec/controllers/idv/link_sent_controller_spec.rb b/spec/controllers/idv/link_sent_controller_spec.rb index a82da6328f6..c600e714e9c 100644 --- a/spec/controllers/idv/link_sent_controller_spec.rb +++ b/spec/controllers/idv/link_sent_controller_spec.rb @@ -10,7 +10,7 @@ before do stub_sign_in(user) subject.idv_session.welcome_visited = true - subject.idv_session.idv_consent_given = true + subject.idv_session.idv_consent_given_at = Time.zone.now subject.idv_session.flow_path = 'hybrid' stub_analytics allow(subject).to receive(:ab_test_analytics_buckets).and_return(ab_test_args) @@ -87,7 +87,7 @@ context 'flow_path is standard' do it 'redirects to idv_document_capture_url' do subject.idv_session.welcome_visited = true - subject.idv_session.idv_consent_given = true + subject.idv_session.idv_consent_given_at = Time.zone.now subject.idv_session.flow_path = 'standard' get :show diff --git a/spec/controllers/idv/otp_verification_controller_spec.rb b/spec/controllers/idv/otp_verification_controller_spec.rb index 54b335e922a..586a83d47a3 100644 --- a/spec/controllers/idv/otp_verification_controller_spec.rb +++ b/spec/controllers/idv/otp_verification_controller_spec.rb @@ -30,7 +30,7 @@ sign_in(user) stub_verify_steps_one_and_two(user) subject.idv_session.welcome_visited = true - subject.idv_session.idv_consent_given = true + subject.idv_session.idv_consent_given_at = Time.zone.now subject.idv_session.flow_path = 'standard' subject.idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT) subject.idv_session.ssn = Idp::Constants::MOCK_IDV_APPLICANT_WITH_PHONE[:ssn] diff --git a/spec/controllers/idv/phone_errors_controller_spec.rb b/spec/controllers/idv/phone_errors_controller_spec.rb index 82a66bc6d2c..14e9003ff03 100644 --- a/spec/controllers/idv/phone_errors_controller_spec.rb +++ b/spec/controllers/idv/phone_errors_controller_spec.rb @@ -20,7 +20,7 @@ if user stub_sign_in(user) subject.idv_session.welcome_visited = true - subject.idv_session.idv_consent_given = true + subject.idv_session.idv_consent_given_at = Time.zone.now subject.idv_session.flow_path = 'standard' subject.idv_session.pii_from_doc = Pii::StateId.new(**Idp::Constants::MOCK_IDV_APPLICANT) subject.idv_session.ssn = '123-45-6789' diff --git a/spec/policies/idv/flow_policy_spec.rb b/spec/policies/idv/flow_policy_spec.rb index 0e5c3e5fb60..d96c9006355 100644 --- a/spec/policies/idv/flow_policy_spec.rb +++ b/spec/policies/idv/flow_policy_spec.rb @@ -35,7 +35,7 @@ idv_session.welcome_visited = true idv_session.document_capture_session_uuid = SecureRandom.uuid - idv_session.idv_consent_given = true + idv_session.idv_consent_given_at = Time.zone.now idv_session.skip_hybrid_handoff = true idv_session.flow_path = 'standard' @@ -56,7 +56,7 @@ expect(idv_session.welcome_visited).not_to be_nil expect(idv_session.document_capture_session_uuid).not_to be_nil - expect(idv_session.idv_consent_given).to be_nil + expect(idv_session.idv_consent_given_at).to be_nil expect(idv_session.skip_hybrid_handoff).to be_nil expect(idv_session.flow_path).to be_nil @@ -77,7 +77,7 @@ idv_session.welcome_visited = true idv_session.document_capture_session_uuid = SecureRandom.uuid - idv_session.idv_consent_given = true + idv_session.idv_consent_given_at = Time.zone.now idv_session.skip_hybrid_handoff = true idv_session.flow_path = 'standard' @@ -130,7 +130,8 @@ end.not_to change { idv_session.welcome_visited idv_session.document_capture_session_uuid - idv_session.idv_consent_given + idv_session.idv_consent_given_at + idv_session.idv_consent_given? idv_session.skip_hybrid_handoff idv_session.flow_path diff --git a/spec/support/flow_policy_helper.rb b/spec/support/flow_policy_helper.rb index 7f26c330cee..67a24a8a6d6 100644 --- a/spec/support/flow_policy_helper.rb +++ b/spec/support/flow_policy_helper.rb @@ -12,7 +12,7 @@ def stub_step(key:, idv_session:) when :welcome idv_session.welcome_visited = true when :agreement - idv_session.idv_consent_given = true + idv_session.idv_consent_given_at = Time.zone.now when :how_to_verify idv_session.skip_doc_auth = false idv_session.skip_doc_auth_from_how_to_verify = false