From 4e528b666a75234d6e88285dec5c11e1e1837355 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Thu, 16 Jun 2022 16:06:50 -0400 Subject: [PATCH 01/26] First pass at copying verify page into IPP flow --- app/services/idv/steps/ipp/verify_step.rb | 6 ++ app/views/idv/doc_auth/verify.html.erb | 80 +--------------- app/views/idv/in_person/verify.html.erb | 16 +--- app/views/idv/shared/_verify.html.erb | 106 ++++++++++++++++++++++ config/locales/doc_auth/en.yml | 1 + 5 files changed, 117 insertions(+), 92 deletions(-) create mode 100644 app/views/idv/shared/_verify.html.erb diff --git a/app/services/idv/steps/ipp/verify_step.rb b/app/services/idv/steps/ipp/verify_step.rb index 025308b2b51..6a3bfe61a6d 100644 --- a/app/services/idv/steps/ipp/verify_step.rb +++ b/app/services/idv/steps/ipp/verify_step.rb @@ -8,6 +8,12 @@ def call # the idv flow redirect_to idv_phone_url end + + def extra_view_variables + { + pii: flow_session[:pii_from_user], + } + end end end end diff --git a/app/views/idv/doc_auth/verify.html.erb b/app/views/idv/doc_auth/verify.html.erb index 50eb0fc07a2..5931f4708b4 100644 --- a/app/views/idv/doc_auth/verify.html.erb +++ b/app/views/idv/doc_auth/verify.html.erb @@ -2,82 +2,4 @@ <% title t('titles.doc_auth.verify_info') %> -<%= render PageHeadingComponent.new.with_content(t('doc_auth.headings.verify')) %> -
-
- <%= "#{t('doc_auth.forms.first_name')}: #{flow_session[:pii_from_doc][:first_name]}" %> -
-
- <%= "#{t('doc_auth.forms.last_name')}: #{flow_session[:pii_from_doc][:last_name]}" %> -
-
- <%= "#{t('doc_auth.forms.dob')}: #{flow_session[:pii_from_doc][:dob]}" %> -
-
-
-
- <%= "#{t('doc_auth.forms.address1')}: #{flow_session[:pii_from_doc][:address1]}" %> -
-
- <%= "#{t('doc_auth.forms.city')}: #{flow_session[:pii_from_doc][:city]}" %> -
-
- <%= "#{t('doc_auth.forms.state')}: #{flow_session[:pii_from_doc][:state]}" %> -
-
- <%= "#{t('doc_auth.forms.zip_code')}: #{flow_session[:pii_from_doc][:zipcode]}" %> -
-
-
- <%= link_to(t('doc_auth.buttons.change_address'), idv_address_url, 'aria-label': t('doc_auth.buttons.change_address_label')) %> -
-
-
-
- <%= t('doc_auth.forms.ssn') %>: - <%= render( - 'shared/masked_text', - text: SsnFormatter.format(flow_session[:pii_from_doc][:ssn]), - masked_text: SsnFormatter.format_masked(flow_session[:pii_from_doc][:ssn]), - accessible_masked_text: t( - 'idv.accessible_labels.masked_ssn', - first_number: flow_session[:pii_from_doc][:ssn][0], - last_number: flow_session[:pii_from_doc][:ssn][-1], - ), - toggle_label: t('forms.ssn.show'), - ) %> -
-
- <%= button_to( - idv_doc_auth_step_path(step: :redo_ssn), - method: :put, - class: 'usa-button usa-button--unstyled', - 'aria-label': t('doc_auth.buttons.change_ssn_label'), - ) { t('doc_auth.buttons.change_ssn') } %> -
-
-
- <%= render SpinnerButtonComponent.new( - action: ->(**tag_options, &block) do - button_to(url_for, **tag_options, &block) - end, - big: true, - wide: true, - action_message: t('doc_auth.info.verifying'), - method: :put, - form: { - class: 'button_to', - data: { - form_steps_wait: '', - error_message: t('idv.failure.exceptions.internal_error'), - alert_target: '#form-steps-wait-alert', - wait_step_path: idv_doc_auth_step_path(step: :verify_wait), - poll_interval_ms: IdentityConfig.store.poll_rate_for_verify_in_seconds * 1000, - }, - }, - ).with_content(t('forms.buttons.continue')) %> -
-
- -<% javascript_packs_tag_once 'form-steps-wait' %> -<%= render 'idv/doc_auth/start_over_or_cancel', step: 'verify' %> +<%= render 'idv/shared/verify', pii: pii, remote_identity_proofing: true %> diff --git a/app/views/idv/in_person/verify.html.erb b/app/views/idv/in_person/verify.html.erb index 13140ff8bd5..179d18b0061 100644 --- a/app/views/idv/in_person/verify.html.erb +++ b/app/views/idv/in_person/verify.html.erb @@ -1,15 +1,5 @@ -<% title t('titles.doc_auth.verify') %> +
-

- <%= t('in_person_proofing.headings.verify') %> -

+<% title t('titles.doc_auth.verify_info') %> -<%= validated_form_for :doc_auth, - url: url_for, - method: 'put', - html: { autocomplete: 'off', class: 'margin-y-5' } do |f| %> - <%= f.button :button, - t('doc_auth.buttons.continue'), - type: :submit, - class: 'usa-button--big usa-button--wide' %> -<% end %> +<%= render 'idv/shared/verify', pii: pii, remote_identity_proofing: false %> diff --git a/app/views/idv/shared/_verify.html.erb b/app/views/idv/shared/_verify.html.erb new file mode 100644 index 00000000000..6dec0e5a3b6 --- /dev/null +++ b/app/views/idv/shared/_verify.html.erb @@ -0,0 +1,106 @@ +<%# +locals: + pii - user's PII information +%> +<%= render PageHeadingComponent.new.with_content(t('doc_auth.headings.verify')) %> +
+ <% if remote_identity_proofing %> +
+ <%= "#{t('doc_auth.forms.first_name')}: #{pii[:first_name]}" %> +
+
+ <%= "#{t('doc_auth.forms.last_name')}: #{pii[:last_name]}" %> +
+
+ <%= "#{t('doc_auth.forms.dob')}: #{pii[:dob]}" %> +
+
+ <% else %> +
+
+
+ <%= "#{t('doc_auth.forms.first_name')}: #{pii[:first_name]}" %> +
+
+ <%= "#{t('doc_auth.forms.last_name')}: #{pii[:last_name]}" %> +
+
+ <%= "#{t('doc_auth.forms.id_number')}: #{pii[:state_id_number]}" %> +
+
+ <%= "#{t('doc_auth.forms.dob')}: #{pii[:dob]}" %> +
+
+
+ <%= link_to(t('doc_auth.buttons.change_address'), idv_address_url, 'aria-label': t('doc_auth.buttons.change_address_label')) %> +
+
+ <% end %> +
+
+
+ <%= "#{t('doc_auth.forms.address1')}: #{pii[:address1]}" %> +
+
+ <%= "#{t('doc_auth.forms.city')}: #{pii[:city]}" %> +
+
+ <%= "#{t('doc_auth.forms.state')}: #{pii[:state]}" %> +
+
+ <%= "#{t('doc_auth.forms.zip_code')}: #{pii[:zipcode]}" %> +
+
+
+ <%= link_to(t('doc_auth.buttons.change_address'), idv_address_url, 'aria-label': t('doc_auth.buttons.change_address_label')) %> +
+
+
+
+ <%= t('doc_auth.forms.ssn') %>: + <%= render( + 'shared/masked_text', + text: SsnFormatter.format(pii[:ssn]), + masked_text: SsnFormatter.format_masked(pii[:ssn]), + accessible_masked_text: t( + 'idv.accessible_labels.masked_ssn', + first_number: pii[:ssn][0], + last_number: pii[:ssn][-1], + ), + toggle_label: t('forms.ssn.show'), + ) %> +
+
+ <%= button_to( + idv_doc_auth_step_path(step: :redo_ssn), + method: :put, + class: 'usa-button usa-button--unstyled', + 'aria-label': t('doc_auth.buttons.change_ssn_label'), + ) { t('doc_auth.buttons.change_ssn') } %> +
+
+
+ <%= render SpinnerButtonComponent.new( + action: ->(**tag_options, &block) do + button_to(url_for, **tag_options, &block) + end, + big: true, + wide: true, + action_message: t('doc_auth.info.verifying'), + method: :put, + form: { + class: 'button_to', + data: { + form_steps_wait: '', + error_message: t('idv.failure.exceptions.internal_error'), + alert_target: '#form-steps-wait-alert', + wait_step_path: idv_doc_auth_step_path(step: :verify_wait), + poll_interval_ms: IdentityConfig.store.poll_rate_for_verify_in_seconds * 1000, + }, + }, + ).with_content(t('forms.buttons.continue')) %> +
+ + +<% javascript_packs_tag_once 'form-steps-wait' %> +<%= render 'idv/doc_auth/start_over_or_cancel', step: 'verify' %> diff --git a/config/locales/doc_auth/en.yml b/config/locales/doc_auth/en.yml index 3809d67a01f..60b53755005 100644 --- a/config/locales/doc_auth/en.yml +++ b/config/locales/doc_auth/en.yml @@ -113,6 +113,7 @@ en: dob: Date of Birth doc_success: We have verified your personal information first_name: First Name + id_number: ID Number last_name: Last Name selected_file: Selected file ssn: Social Security Number From ba5567b99edc86a1db9f568d703db82519e80cc1 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Fri, 17 Jun 2022 08:51:58 -0400 Subject: [PATCH 02/26] Start adding actions for IPP flow --- app/services/idv/actions/redo_address_action.rb | 9 +++++++++ app/services/idv/actions/redo_state_id_action.rb | 9 +++++++++ app/services/idv/flows/in_person_flow.rb | 3 +++ app/views/idv/shared/_verify.html.erb | 1 + 4 files changed, 22 insertions(+) create mode 100644 app/services/idv/actions/redo_address_action.rb create mode 100644 app/services/idv/actions/redo_state_id_action.rb diff --git a/app/services/idv/actions/redo_address_action.rb b/app/services/idv/actions/redo_address_action.rb new file mode 100644 index 00000000000..f93d8e5a8fb --- /dev/null +++ b/app/services/idv/actions/redo_address_action.rb @@ -0,0 +1,9 @@ +module Idv + module Actions + class RedoAddressAction < Idv::Steps::DocAuthBaseStep + def call + mark_step_incomplete(:address) + end + end + end +end diff --git a/app/services/idv/actions/redo_state_id_action.rb b/app/services/idv/actions/redo_state_id_action.rb new file mode 100644 index 00000000000..f1d509e8c23 --- /dev/null +++ b/app/services/idv/actions/redo_state_id_action.rb @@ -0,0 +1,9 @@ +module Idv + module Actions + class RedoStateIdAction < Idv::Steps::DocAuthBaseStep + def call + mark_step_incomplete(:state_id) + end + end + end +end diff --git a/app/services/idv/flows/in_person_flow.rb b/app/services/idv/flows/in_person_flow.rb index a1f7ef2965c..223cf56a90c 100644 --- a/app/services/idv/flows/in_person_flow.rb +++ b/app/services/idv/flows/in_person_flow.rb @@ -11,6 +11,9 @@ class InPersonFlow < Flow::BaseFlow }.freeze ACTIONS = { + redo_state_id: Idv::Actions::RedoStateIdAction, + redo_address: Idv::Actions::RedoAddressAction, + redo_ssn: Idv::Actions::RedoSsnAction, }.freeze # WILLFIX: (LG-6308) move this to the barcode page when we finish setting up IPP step diff --git a/app/views/idv/shared/_verify.html.erb b/app/views/idv/shared/_verify.html.erb index 6dec0e5a3b6..25b3c6cc85e 100644 --- a/app/views/idv/shared/_verify.html.erb +++ b/app/views/idv/shared/_verify.html.erb @@ -1,6 +1,7 @@ <%# locals: pii - user's PII information + remote_identity_proofing - true if we're doing RIDP, false if we're doing IPP %> <%= render PageHeadingComponent.new.with_content(t('doc_auth.headings.verify')) %>
From 6fd2b0fb67f6b1231bfb4b088e8711c772dadd84 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Tue, 21 Jun 2022 17:26:14 -0400 Subject: [PATCH 03/26] Allow updating SSN --- app/services/idv/steps/ipp/verify_step.rb | 1 + app/services/idv/steps/verify_step.rb | 7 +++++++ app/views/idv/in_person/verify.html.erb | 2 +- app/views/idv/shared/_verify.html.erb | 3 ++- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/services/idv/steps/ipp/verify_step.rb b/app/services/idv/steps/ipp/verify_step.rb index 6a3bfe61a6d..2e1b87b552f 100644 --- a/app/services/idv/steps/ipp/verify_step.rb +++ b/app/services/idv/steps/ipp/verify_step.rb @@ -12,6 +12,7 @@ def call def extra_view_variables { pii: flow_session[:pii_from_user], + step_url: method(:idv_in_person_step_url), } end end diff --git a/app/services/idv/steps/verify_step.rb b/app/services/idv/steps/verify_step.rb index 7d62d34c623..63b8f29a204 100644 --- a/app/services/idv/steps/verify_step.rb +++ b/app/services/idv/steps/verify_step.rb @@ -7,6 +7,13 @@ def call enqueue_job end + def extra_view_variables + { + pii: pii, + step_url: method(:idv_doc_auth_step_url), + } + end + private def enqueue_job diff --git a/app/views/idv/in_person/verify.html.erb b/app/views/idv/in_person/verify.html.erb index 179d18b0061..b75452d3342 100644 --- a/app/views/idv/in_person/verify.html.erb +++ b/app/views/idv/in_person/verify.html.erb @@ -2,4 +2,4 @@ <% title t('titles.doc_auth.verify_info') %> -<%= render 'idv/shared/verify', pii: pii, remote_identity_proofing: false %> +<%= render 'idv/shared/verify', pii: pii, remote_identity_proofing: false, step_url: step_url %> diff --git a/app/views/idv/shared/_verify.html.erb b/app/views/idv/shared/_verify.html.erb index 25b3c6cc85e..85c7e03bfd5 100644 --- a/app/views/idv/shared/_verify.html.erb +++ b/app/views/idv/shared/_verify.html.erb @@ -2,6 +2,7 @@ locals: pii - user's PII information remote_identity_proofing - true if we're doing RIDP, false if we're doing IPP + step_url - generator for step URLs %> <%= render PageHeadingComponent.new.with_content(t('doc_auth.headings.verify')) %>
@@ -73,7 +74,7 @@ locals:
<%= button_to( - idv_doc_auth_step_path(step: :redo_ssn), + step_url.call(step: :redo_ssn), method: :put, class: 'usa-button usa-button--unstyled', 'aria-label': t('doc_auth.buttons.change_ssn_label'), From d04dc06873b1f23b0c738dfb10e168e6cbbfbde4 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Tue, 21 Jun 2022 18:38:06 -0400 Subject: [PATCH 04/26] Functional verify pages in doc auth and IPP --- .../idv/actions/redo_address_action.rb | 2 +- app/services/idv/flows/doc_auth_flow.rb | 1 + app/services/idv/flows/in_person_flow.rb | 2 +- .../in_person/actions/redo_address_action.rb | 11 +++ app/views/idv/doc_auth/verify.html.erb | 2 +- app/views/idv/shared/_verify.html.erb | 89 ++++++++++--------- 6 files changed, 64 insertions(+), 43 deletions(-) create mode 100644 app/services/idv/in_person/actions/redo_address_action.rb diff --git a/app/services/idv/actions/redo_address_action.rb b/app/services/idv/actions/redo_address_action.rb index f93d8e5a8fb..a67f6c29ecd 100644 --- a/app/services/idv/actions/redo_address_action.rb +++ b/app/services/idv/actions/redo_address_action.rb @@ -2,7 +2,7 @@ module Idv module Actions class RedoAddressAction < Idv::Steps::DocAuthBaseStep def call - mark_step_incomplete(:address) + redirect_to idv_address_url end end end diff --git a/app/services/idv/flows/doc_auth_flow.rb b/app/services/idv/flows/doc_auth_flow.rb index f92cc286d47..df6a8864de7 100644 --- a/app/services/idv/flows/doc_auth_flow.rb +++ b/app/services/idv/flows/doc_auth_flow.rb @@ -30,6 +30,7 @@ class DocAuthFlow < Flow::BaseFlow cancel_send_link: Idv::Actions::CancelSendLinkAction, cancel_link_sent: Idv::Actions::CancelLinkSentAction, cancel_update_ssn: Idv::Actions::CancelUpdateSsnAction, + redo_address: Idv::Actions::RedoAddressAction, redo_ssn: Idv::Actions::RedoSsnAction, verify_document: Idv::Actions::VerifyDocumentAction, verify_document_status: Idv::Actions::VerifyDocumentStatusAction, diff --git a/app/services/idv/flows/in_person_flow.rb b/app/services/idv/flows/in_person_flow.rb index 223cf56a90c..d99e3f24b9c 100644 --- a/app/services/idv/flows/in_person_flow.rb +++ b/app/services/idv/flows/in_person_flow.rb @@ -12,7 +12,7 @@ class InPersonFlow < Flow::BaseFlow ACTIONS = { redo_state_id: Idv::Actions::RedoStateIdAction, - redo_address: Idv::Actions::RedoAddressAction, + redo_address: Idv::InPerson::Actions::RedoAddressAction, redo_ssn: Idv::Actions::RedoSsnAction, }.freeze diff --git a/app/services/idv/in_person/actions/redo_address_action.rb b/app/services/idv/in_person/actions/redo_address_action.rb new file mode 100644 index 00000000000..dc1344bbbc9 --- /dev/null +++ b/app/services/idv/in_person/actions/redo_address_action.rb @@ -0,0 +1,11 @@ +module Idv + module InPerson + module Actions + class RedoAddressAction < Idv::Steps::DocAuthBaseStep + def call + mark_step_incomplete(:address) + end + end + end + end +end diff --git a/app/views/idv/doc_auth/verify.html.erb b/app/views/idv/doc_auth/verify.html.erb index 5931f4708b4..7f93bc009a4 100644 --- a/app/views/idv/doc_auth/verify.html.erb +++ b/app/views/idv/doc_auth/verify.html.erb @@ -2,4 +2,4 @@ <% title t('titles.doc_auth.verify_info') %> -<%= render 'idv/shared/verify', pii: pii, remote_identity_proofing: true %> +<%= render 'idv/shared/verify', pii: pii, step_url: step_url, remote_identity_proofing: true %> diff --git a/app/views/idv/shared/_verify.html.erb b/app/views/idv/shared/_verify.html.erb index 85c7e03bfd5..ff38e73a7bd 100644 --- a/app/views/idv/shared/_verify.html.erb +++ b/app/views/idv/shared/_verify.html.erb @@ -16,7 +16,6 @@ locals:
<%= "#{t('doc_auth.forms.dob')}: #{pii[:dob]}" %>
-
<% else %>
@@ -34,53 +33,63 @@ locals:
- <%= link_to(t('doc_auth.buttons.change_address'), idv_address_url, 'aria-label': t('doc_auth.buttons.change_address_label')) %> + <%= button_to( + step_url.call(step: :redo_state_id), + method: :put, + class: 'usa-button usa-button--unstyled', + 'aria-label': t('doc_auth.buttons.change_ssn_label'), + ) { t('doc_auth.buttons.change_ssn') } %>
<% end %> -
-
-
- <%= "#{t('doc_auth.forms.address1')}: #{pii[:address1]}" %> -
-
- <%= "#{t('doc_auth.forms.city')}: #{pii[:city]}" %> -
-
- <%= "#{t('doc_auth.forms.state')}: #{pii[:state]}" %> -
-
- <%= "#{t('doc_auth.forms.zip_code')}: #{pii[:zipcode]}" %> -
+
+
+
+ <%= "#{t('doc_auth.forms.address1')}: #{pii[:address1]}" %>
-
- <%= link_to(t('doc_auth.buttons.change_address'), idv_address_url, 'aria-label': t('doc_auth.buttons.change_address_label')) %> +
+ <%= "#{t('doc_auth.forms.city')}: #{pii[:city]}" %>
-
-
-
- <%= t('doc_auth.forms.ssn') %>: - <%= render( - 'shared/masked_text', - text: SsnFormatter.format(pii[:ssn]), - masked_text: SsnFormatter.format_masked(pii[:ssn]), - accessible_masked_text: t( - 'idv.accessible_labels.masked_ssn', - first_number: pii[:ssn][0], - last_number: pii[:ssn][-1], - ), - toggle_label: t('forms.ssn.show'), - ) %> +
+ <%= "#{t('doc_auth.forms.state')}: #{pii[:state]}" %>
-
- <%= button_to( - step_url.call(step: :redo_ssn), - method: :put, - class: 'usa-button usa-button--unstyled', - 'aria-label': t('doc_auth.buttons.change_ssn_label'), - ) { t('doc_auth.buttons.change_ssn') } %> +
+ <%= "#{t('doc_auth.forms.zip_code')}: #{pii[:zipcode]}" %>
+
+ <%= button_to( + step_url.call(step: :redo_address), + method: :put, + class: 'usa-button usa-button--unstyled', + 'aria-label': t('doc_auth.buttons.change_ssn_label'), + ) { t('doc_auth.buttons.change_ssn') } %> +
+
+
+
+ <%= t('doc_auth.forms.ssn') %>: + <%= render( + 'shared/masked_text', + text: SsnFormatter.format(pii[:ssn]), + masked_text: SsnFormatter.format_masked(pii[:ssn]), + accessible_masked_text: t( + 'idv.accessible_labels.masked_ssn', + first_number: pii[:ssn][0], + last_number: pii[:ssn][-1], + ), + toggle_label: t('forms.ssn.show'), + ) %> +
+
+ <%= button_to( + step_url.call(step: :redo_ssn), + method: :put, + class: 'usa-button usa-button--unstyled', + 'aria-label': t('doc_auth.buttons.change_ssn_label'), + ) { t('doc_auth.buttons.change_ssn') } %> +
+
<%= render SpinnerButtonComponent.new( action: ->(**tag_options, &block) do From 2835214a02a07371cec16a56a51cb4cb88ae73f5 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Wed, 22 Jun 2022 10:37:02 -0400 Subject: [PATCH 05/26] Rename RedoAddress namespace to be consistent --- .../{in_person/actions => actions/ipp}/redo_address_action.rb | 4 ++-- app/services/idv/flows/in_person_flow.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename app/services/idv/{in_person/actions => actions/ipp}/redo_address_action.rb (82%) diff --git a/app/services/idv/in_person/actions/redo_address_action.rb b/app/services/idv/actions/ipp/redo_address_action.rb similarity index 82% rename from app/services/idv/in_person/actions/redo_address_action.rb rename to app/services/idv/actions/ipp/redo_address_action.rb index dc1344bbbc9..368a449dadd 100644 --- a/app/services/idv/in_person/actions/redo_address_action.rb +++ b/app/services/idv/actions/ipp/redo_address_action.rb @@ -1,6 +1,6 @@ module Idv - module InPerson - module Actions + module Actions + module Ipp class RedoAddressAction < Idv::Steps::DocAuthBaseStep def call mark_step_incomplete(:address) diff --git a/app/services/idv/flows/in_person_flow.rb b/app/services/idv/flows/in_person_flow.rb index d99e3f24b9c..d6df0c6de1e 100644 --- a/app/services/idv/flows/in_person_flow.rb +++ b/app/services/idv/flows/in_person_flow.rb @@ -12,7 +12,7 @@ class InPersonFlow < Flow::BaseFlow ACTIONS = { redo_state_id: Idv::Actions::RedoStateIdAction, - redo_address: Idv::InPerson::Actions::RedoAddressAction, + redo_address: Idv::Actions::Ipp::RedoAddressAction, redo_ssn: Idv::Actions::RedoSsnAction, }.freeze From 55474bf7fe47804701e310b0cf9ab0239d1d96b3 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Wed, 22 Jun 2022 13:25:06 -0400 Subject: [PATCH 06/26] Make the update state ID page functional --- app/services/idv/steps/ipp/state_id_step.rb | 7 +++++++ app/views/idv/in_person/state_id.html.erb | 12 ++++++++++-- config/locales/in_person_proofing/en.yml | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app/services/idv/steps/ipp/state_id_step.rb b/app/services/idv/steps/ipp/state_id_step.rb index a3719149e90..73449f4d6c5 100644 --- a/app/services/idv/steps/ipp/state_id_step.rb +++ b/app/services/idv/steps/ipp/state_id_step.rb @@ -10,6 +10,13 @@ def call end end + def extra_view_variables + { + pii: flow_session[:pii_from_user], + updating_state_id: !!flow_session[:pii_from_user].has_key?(:first_name), + } + end + private def form_submit diff --git a/app/views/idv/in_person/state_id.html.erb b/app/views/idv/in_person/state_id.html.erb index 2f2eedad725..d8abfaf0f4b 100644 --- a/app/views/idv/in_person/state_id.html.erb +++ b/app/views/idv/in_person/state_id.html.erb @@ -1,7 +1,10 @@ <% title t('titles.doc_auth.verify') %> - -<%= render PageHeadingComponent.new.with_content(t('in_person_proofing.headings.state_id')) %> +<% if updating_state_id %> + <%= render PageHeadingComponent.new.with_content(t('in_person_proofing.headings.update_state_id')) %> +<% else %> + <%= render PageHeadingComponent.new.with_content(t('in_person_proofing.headings.state_id')) %> +<% end %>

<%= t('in_person_proofing.body.state_id.info_html') %> @@ -20,6 +23,7 @@ label_html: { class: 'usa-label' }, maxlength: 255, required: true, + input_html: { value: pii[:first_name] }, ) %>

@@ -31,6 +35,7 @@ label_html: { class: 'usa-label' }, maxlength: 255, required: true, + input_html: { value: pii[:last_name] }, ) %>
@@ -45,6 +50,7 @@ label_html: { class: 'usa-label' }, maxlength: 255, required: true, + input_html: { value: pii[:dob] }, ) %>
@@ -58,6 +64,7 @@ label_html: { class: 'usa-label' }, prompt: t('in_person_proofing.form.state_id.state_id_jurisdiction_prompt'), required: true, + selected: pii[:state_id_jurisdiction], ) %>
@@ -70,6 +77,7 @@ label_html: { class: 'usa-label' }, maxlength: 255, required: true, + input_html: { value: pii[:state_id_number] }, ) %>
diff --git a/config/locales/in_person_proofing/en.yml b/config/locales/in_person_proofing/en.yml index b464e5fa908..afe63a9e00e 100644 --- a/config/locales/in_person_proofing/en.yml +++ b/config/locales/in_person_proofing/en.yml @@ -37,5 +37,6 @@ en: barcode: You’re ready to verify your identity in person location: Select a location to verify your ID state_id: Enter the information on your ID + update_state_id: Update the information on your ID verify: Please verify your information welcome: Verify your identity in person From 947f4db7b86c0cc13e7d5e22e929509a11b3055d Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Wed, 22 Jun 2022 13:51:07 -0400 Subject: [PATCH 07/26] Functional update address page --- app/services/idv/steps/ipp/address_step.rb | 7 +++ app/services/idv/steps/ipp/state_id_step.rb | 2 +- app/views/idv/in_person/address.html.erb | 55 ++++++++++++--------- app/views/idv/in_person/state_id.html.erb | 8 +-- config/locales/in_person_proofing/en.yml | 1 + 5 files changed, 45 insertions(+), 28 deletions(-) diff --git a/app/services/idv/steps/ipp/address_step.rb b/app/services/idv/steps/ipp/address_step.rb index c519974f1ea..024bc05dbc6 100644 --- a/app/services/idv/steps/ipp/address_step.rb +++ b/app/services/idv/steps/ipp/address_step.rb @@ -10,6 +10,13 @@ def call end end + def extra_view_variables + { + pii: flow_session[:pii_from_user], + updating_address: flow_session[:pii_from_user].has_key?(:address1), + } + end + private def form_submit diff --git a/app/services/idv/steps/ipp/state_id_step.rb b/app/services/idv/steps/ipp/state_id_step.rb index 73449f4d6c5..8db2067a54a 100644 --- a/app/services/idv/steps/ipp/state_id_step.rb +++ b/app/services/idv/steps/ipp/state_id_step.rb @@ -13,7 +13,7 @@ def call def extra_view_variables { pii: flow_session[:pii_from_user], - updating_state_id: !!flow_session[:pii_from_user].has_key?(:first_name), + updating_state_id: flow_session[:pii_from_user].has_key?(:first_name), } end diff --git a/app/views/idv/in_person/address.html.erb b/app/views/idv/in_person/address.html.erb index 44a2c5bf557..ae1c45716fe 100644 --- a/app/views/idv/in_person/address.html.erb +++ b/app/views/idv/in_person/address.html.erb @@ -1,6 +1,10 @@ <% title t('titles.doc_auth.verify') %> -<%= render PageHeadingComponent.new.with_content(t('in_person_proofing.headings.address')) %> +<% if updating_address %> + <%= render PageHeadingComponent.new.with_content(t('in_person_proofing.headings.update_address')) %> +<% else %> + <%= render PageHeadingComponent.new.with_content(t('in_person_proofing.headings.address')) %> +<% end %>

<%= t('in_person_proofing.body.address.info') %> @@ -12,64 +16,69 @@ html: { autocomplete: 'off' } ) do |f| %> <%= render ValidatedFieldComponent.new( - name: :address1, form: f, + input_html: { value: pii[:address1] }, label: t('in_person_proofing.form.address.address1'), - required: true, - maxlength: 255, label_html: { class: 'usa-label' }, + maxlength: 255, + name: :address1, + required: true, ) %> <%= render ValidatedFieldComponent.new( - name: :address2, form: f, + input_html: { value: pii[:address2] }, label: t('in_person_proofing.form.address.address2'), - required: false, - maxlength: 255, label_html: { class: 'usa-label' }, + maxlength: 255, + name: :address2, + required: false, ) %> <%= render ValidatedFieldComponent.new( - name: :city, form: f, + input_html: { value: pii[:city] }, label: t('in_person_proofing.form.address.city'), - required: true, - maxlength: 255, label_html: { class: 'usa-label' }, + maxlength: 255, + name: :city, + required: true, ) %> <%= render ValidatedFieldComponent.new( - name: :state, - form: f, collection: us_states_territories, + form: f, label: t('in_person_proofing.form.address.state'), + label_html: { class: 'usa-label' }, + name: :state, prompt: t('in_person_proofing.form.address.state_prompt'), required: true, - label_html: { class: 'usa-label' }, + selected: pii[:state], ) %>

<%# using :tel for mobile numeric keypad %> <%= render ValidatedFieldComponent.new( - name: :zipcode, - form: f, as: :tel, + error_messages: { patternMismatch: t('idv.errors.pattern_mismatch.zipcode') }, + form: f, + input_html: { value: pii[:zipcode] }, label: t('in_person_proofing.form.address.zipcode'), - required: true, - pattern: '\d{5}([\-]\d{4})?', label_html: { class: 'usa-label' }, - error_messages: { patternMismatch: t('idv.errors.pattern_mismatch.zipcode') }, + name: :zipcode, + pattern: '\d{5}([\-]\d{4})?', + required: true, ) %>
<%= render ValidatedFieldComponent.new( - name: :same_address_as_id, - form: f, as: :radio_buttons, - wrapper: :uswds_radio_buttons, - label: t('in_person_proofing.form.address.same_address'), - required: true, collection: [ [t('in_person_proofing.form.address.same_address_choice_yes'), true], [t('in_person_proofing.form.address.same_address_choice_no'), false], ], + form: f, + label: t('in_person_proofing.form.address.same_address'), + name: :same_address_as_id, + required: true, + wrapper: :uswds_radio_buttons, ) %> <%= render ButtonComponent.new(big: true, wide: true, class: 'margin-top-1') do %> diff --git a/app/views/idv/in_person/state_id.html.erb b/app/views/idv/in_person/state_id.html.erb index d8abfaf0f4b..8ea997c1454 100644 --- a/app/views/idv/in_person/state_id.html.erb +++ b/app/views/idv/in_person/state_id.html.erb @@ -19,11 +19,11 @@ <%= render ValidatedFieldComponent.new( name: :first_name, form: f, + input_html: { value: pii[:first_name] }, label: t('in_person_proofing.form.state_id.first_name'), label_html: { class: 'usa-label' }, maxlength: 255, required: true, - input_html: { value: pii[:first_name] }, ) %>
@@ -31,11 +31,11 @@ <%= render ValidatedFieldComponent.new( name: :last_name, form: f, + input_html: { value: pii[:last_name] }, label: t('in_person_proofing.form.state_id.last_name'), label_html: { class: 'usa-label' }, maxlength: 255, required: true, - input_html: { value: pii[:last_name] }, ) %> @@ -46,11 +46,11 @@ form: f, hint: t('in_person_proofing.form.state_id.dob_hint'), html5: true, + input_html: { value: pii[:dob] }, label: t('in_person_proofing.form.state_id.dob'), label_html: { class: 'usa-label' }, maxlength: 255, required: true, - input_html: { value: pii[:dob] }, ) %> @@ -73,11 +73,11 @@ name: :state_id_number, form: f, hint: t('in_person_proofing.form.state_id.state_id_number_hint'), + input_html: { value: pii[:state_id_number] }, label: t('in_person_proofing.form.state_id.state_id_number'), label_html: { class: 'usa-label' }, maxlength: 255, required: true, - input_html: { value: pii[:state_id_number] }, ) %> diff --git a/config/locales/in_person_proofing/en.yml b/config/locales/in_person_proofing/en.yml index afe63a9e00e..3dfe1531576 100644 --- a/config/locales/in_person_proofing/en.yml +++ b/config/locales/in_person_proofing/en.yml @@ -37,6 +37,7 @@ en: barcode: You’re ready to verify your identity in person location: Select a location to verify your ID state_id: Enter the information on your ID + update_address: Update your current address update_state_id: Update the information on your ID verify: Please verify your information welcome: Verify your identity in person From ac4fffa4a3c92f98411acdd895f007b047725226 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Wed, 22 Jun 2022 14:48:50 -0400 Subject: [PATCH 08/26] Functional update SSN page --- app/services/idv/steps/ipp/ssn_step.rb | 2 +- app/services/idv/steps/ssn_step.rb | 2 +- app/views/idv/doc_auth/ssn.html.erb | 2 +- app/views/idv/in_person/ssn.html.erb | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/services/idv/steps/ipp/ssn_step.rb b/app/services/idv/steps/ipp/ssn_step.rb index 8ba16613953..9f2c27ce77d 100644 --- a/app/services/idv/steps/ipp/ssn_step.rb +++ b/app/services/idv/steps/ipp/ssn_step.rb @@ -10,7 +10,7 @@ def call def extra_view_variables { - applicant_ssn: flow_session[:pii_from_user][:ssn], + updating_ssn: flow_session[:pii_from_user].has_key?(:ssn), } end diff --git a/app/services/idv/steps/ssn_step.rb b/app/services/idv/steps/ssn_step.rb index 8723b85c844..64513455e1e 100644 --- a/app/services/idv/steps/ssn_step.rb +++ b/app/services/idv/steps/ssn_step.rb @@ -11,7 +11,7 @@ def call def extra_view_variables { - applicant_ssn: flow_session[:pii_from_doc][:ssn], + updating_ssn: flow_session[:pii_from_doc].has_key?(:ssn), } end diff --git a/app/views/idv/doc_auth/ssn.html.erb b/app/views/idv/doc_auth/ssn.html.erb index ad29b047658..22e2f37ac4e 100644 --- a/app/views/idv/doc_auth/ssn.html.erb +++ b/app/views/idv/doc_auth/ssn.html.erb @@ -1 +1 @@ -<%= render 'idv/shared/ssn', flow_session: flow_session, success_alert_enabled: applicant_ssn.blank?, updating_ssn: applicant_ssn %> +<%= render 'idv/shared/ssn', flow_session: flow_session, success_alert_enabled: !updating_ssn, updating_ssn: updating_ssn %> diff --git a/app/views/idv/in_person/ssn.html.erb b/app/views/idv/in_person/ssn.html.erb index e8e33007676..5bb75490e02 100644 --- a/app/views/idv/in_person/ssn.html.erb +++ b/app/views/idv/in_person/ssn.html.erb @@ -1 +1 @@ -<%= render 'idv/shared/ssn', flow_session: flow_session, success_alert_enabled: false, updating_ssn: applicant_ssn %> +<%= render 'idv/shared/ssn', flow_session: flow_session, success_alert_enabled: false, updating_ssn: updating_ssn %> From 93c4e7da2c0421f6e251dc0446467620b926d16b Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Wed, 22 Jun 2022 16:57:04 -0400 Subject: [PATCH 09/26] Swap state ID and dob displays --- app/views/idv/shared/_verify.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/idv/shared/_verify.html.erb b/app/views/idv/shared/_verify.html.erb index ff38e73a7bd..dd5cb9b49fd 100644 --- a/app/views/idv/shared/_verify.html.erb +++ b/app/views/idv/shared/_verify.html.erb @@ -26,10 +26,10 @@ locals: <%= "#{t('doc_auth.forms.last_name')}: #{pii[:last_name]}" %>
- <%= "#{t('doc_auth.forms.id_number')}: #{pii[:state_id_number]}" %> + <%= "#{t('doc_auth.forms.dob')}: #{pii[:dob]}" %>
- <%= "#{t('doc_auth.forms.dob')}: #{pii[:dob]}" %> + <%= "#{t('doc_auth.forms.id_number')}: #{pii[:state_id_number]}" %>
From 8317d5682949869e575ed2b38bc04ac7716ad6cb Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Wed, 22 Jun 2022 17:46:35 -0400 Subject: [PATCH 10/26] Get rid of outdated data fudging --- app/services/idv/flows/in_person_flow.rb | 14 +++----------- app/services/idv/steps/ipp/verify_step.rb | 6 +++++- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/app/services/idv/flows/in_person_flow.rb b/app/services/idv/flows/in_person_flow.rb index d6df0c6de1e..d322663077c 100644 --- a/app/services/idv/flows/in_person_flow.rb +++ b/app/services/idv/flows/in_person_flow.rb @@ -1,6 +1,8 @@ module Idv module Flows class InPersonFlow < Flow::BaseFlow + attr_reader :idv_session # this is used by DocAuthBaseStep + STEPS = { location: Idv::Steps::Ipp::LocationStep, welcome: Idv::Steps::Ipp::WelcomeStep, # instructions @@ -36,17 +38,7 @@ def initialize(controller, session, name) end def self.session_idv(session) - session[:idv] ||= { params: {}, step_attempts: { phone: 0 } } - - # WILLFIX: remove the line below when we're collecting all user data - session[:idv][:applicant] ||= Idp::Constants::MOCK_IDV_APPLICANT_WITH_SSN.dup - - # WILLFIX: (LG-6349) remove this block when we implement the verify page - session[:idv]['profile_confirmation'] = true - session[:idv]['vendor_phone_confirmation'] = false - session[:idv]['user_phone_confirmation'] = false - session[:idv]['address_verification_mechanism'] = 'phone' - session[:idv]['resolution_successful'] = 'phone' + session[:idv] ||= {} end end end diff --git a/app/services/idv/steps/ipp/verify_step.rb b/app/services/idv/steps/ipp/verify_step.rb index 2e1b87b552f..29ea681415d 100644 --- a/app/services/idv/steps/ipp/verify_step.rb +++ b/app/services/idv/steps/ipp/verify_step.rb @@ -1,9 +1,13 @@ module Idv module Steps module Ipp - class VerifyStep < DocAuthBaseStep + class VerifyStep < VerifyBaseStep STEP_INDICATOR_STEP = :verify_info def call + # WILLFIX: (LG-6498) make a call to Instant Verify before allowing the user to continue + save_legacy_state + delete_pii + # send the user to the phone page where they'll continue the remainder of # the idv flow redirect_to idv_phone_url From 129a4744bb51dc8b81e86317e667aa34ff9e9b9b Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Wed, 22 Jun 2022 21:42:35 -0400 Subject: [PATCH 11/26] Cleanup --- .../idv/actions/ipp/redo_state_id_action.rb | 11 +++++++++++ app/services/idv/actions/redo_state_id_action.rb | 9 --------- app/services/idv/flows/in_person_flow.rb | 2 +- app/services/idv/steps/ipp/verify_step.rb | 2 +- app/views/idv/doc_auth/verify.html.erb | 2 -- app/views/idv/in_person/verify.html.erb | 6 +----- app/views/idv/shared/_verify.html.erb | 14 ++++++++------ config/locales/doc_auth/en.yml | 4 ++-- 8 files changed, 24 insertions(+), 26 deletions(-) create mode 100644 app/services/idv/actions/ipp/redo_state_id_action.rb delete mode 100644 app/services/idv/actions/redo_state_id_action.rb diff --git a/app/services/idv/actions/ipp/redo_state_id_action.rb b/app/services/idv/actions/ipp/redo_state_id_action.rb new file mode 100644 index 00000000000..99a1c9f514e --- /dev/null +++ b/app/services/idv/actions/ipp/redo_state_id_action.rb @@ -0,0 +1,11 @@ +module Idv + module Actions + module Ipp + class RedoStateIdAction < Idv::Steps::DocAuthBaseStep + def call + mark_step_incomplete(:state_id) + end + end + end + end +end diff --git a/app/services/idv/actions/redo_state_id_action.rb b/app/services/idv/actions/redo_state_id_action.rb deleted file mode 100644 index f1d509e8c23..00000000000 --- a/app/services/idv/actions/redo_state_id_action.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Idv - module Actions - class RedoStateIdAction < Idv::Steps::DocAuthBaseStep - def call - mark_step_incomplete(:state_id) - end - end - end -end diff --git a/app/services/idv/flows/in_person_flow.rb b/app/services/idv/flows/in_person_flow.rb index d322663077c..ca221951e06 100644 --- a/app/services/idv/flows/in_person_flow.rb +++ b/app/services/idv/flows/in_person_flow.rb @@ -13,7 +13,7 @@ class InPersonFlow < Flow::BaseFlow }.freeze ACTIONS = { - redo_state_id: Idv::Actions::RedoStateIdAction, + redo_state_id: Idv::Actions::Ipp::RedoStateIdAction, redo_address: Idv::Actions::Ipp::RedoAddressAction, redo_ssn: Idv::Actions::RedoSsnAction, }.freeze diff --git a/app/services/idv/steps/ipp/verify_step.rb b/app/services/idv/steps/ipp/verify_step.rb index 29ea681415d..64660003d69 100644 --- a/app/services/idv/steps/ipp/verify_step.rb +++ b/app/services/idv/steps/ipp/verify_step.rb @@ -15,7 +15,7 @@ def call def extra_view_variables { - pii: flow_session[:pii_from_user], + pii: pii, step_url: method(:idv_in_person_step_url), } end diff --git a/app/views/idv/doc_auth/verify.html.erb b/app/views/idv/doc_auth/verify.html.erb index 7f93bc009a4..ac0d58d6948 100644 --- a/app/views/idv/doc_auth/verify.html.erb +++ b/app/views/idv/doc_auth/verify.html.erb @@ -1,5 +1,3 @@
-<% title t('titles.doc_auth.verify_info') %> - <%= render 'idv/shared/verify', pii: pii, step_url: step_url, remote_identity_proofing: true %> diff --git a/app/views/idv/in_person/verify.html.erb b/app/views/idv/in_person/verify.html.erb index b75452d3342..28f3686a616 100644 --- a/app/views/idv/in_person/verify.html.erb +++ b/app/views/idv/in_person/verify.html.erb @@ -1,5 +1 @@ -
- -<% title t('titles.doc_auth.verify_info') %> - -<%= render 'idv/shared/verify', pii: pii, remote_identity_proofing: false, step_url: step_url %> +<%= render 'idv/shared/verify', pii: pii, step_url: step_url, remote_identity_proofing: false %> diff --git a/app/views/idv/shared/_verify.html.erb b/app/views/idv/shared/_verify.html.erb index dd5cb9b49fd..9621142650e 100644 --- a/app/views/idv/shared/_verify.html.erb +++ b/app/views/idv/shared/_verify.html.erb @@ -1,9 +1,11 @@ <%# locals: - pii - user's PII information + pii - user's information remote_identity_proofing - true if we're doing RIDP, false if we're doing IPP step_url - generator for step URLs %> +<% title t('titles.doc_auth.verify_info') %> + <%= render PageHeadingComponent.new.with_content(t('doc_auth.headings.verify')) %>
<% if remote_identity_proofing %> @@ -37,8 +39,8 @@ locals: step_url.call(step: :redo_state_id), method: :put, class: 'usa-button usa-button--unstyled', - 'aria-label': t('doc_auth.buttons.change_ssn_label'), - ) { t('doc_auth.buttons.change_ssn') } %> + 'aria-label': t('doc_auth.buttons.change_state_id_label'), + ) { t('doc_auth.buttons.change_label') } %>
<% end %> @@ -62,8 +64,8 @@ locals: step_url.call(step: :redo_address), method: :put, class: 'usa-button usa-button--unstyled', - 'aria-label': t('doc_auth.buttons.change_ssn_label'), - ) { t('doc_auth.buttons.change_ssn') } %> + 'aria-label': t('doc_auth.buttons.change_address_label'), + ) { t('doc_auth.buttons.change_label') } %>
@@ -87,7 +89,7 @@ locals: method: :put, class: 'usa-button usa-button--unstyled', 'aria-label': t('doc_auth.buttons.change_ssn_label'), - ) { t('doc_auth.buttons.change_ssn') } %> + ) { t('doc_auth.buttons.change_label') } %>
diff --git a/config/locales/doc_auth/en.yml b/config/locales/doc_auth/en.yml index 60b53755005..6239f717a72 100644 --- a/config/locales/doc_auth/en.yml +++ b/config/locales/doc_auth/en.yml @@ -7,10 +7,10 @@ en: document_capture_dialog: Document capture selfie_alt_text: An uploaded image buttons: - change_address: Change change_address_label: Change address - change_ssn: Change + change_label: Change change_ssn_label: Change Social Security Number + change_state_id_label: Change state ID continue: Continue start_over: Start over take_or_upload_picture: 'Take photo or From beeb328a249c4826828902bc36290e1d2cee7ff2 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Wed, 22 Jun 2022 21:48:08 -0400 Subject: [PATCH 12/26] Add es and fr translations --- config/locales/doc_auth/es.yml | 1 + config/locales/doc_auth/fr.yml | 1 + config/locales/in_person_proofing/es.yml | 2 ++ config/locales/in_person_proofing/fr.yml | 2 ++ 4 files changed, 6 insertions(+) diff --git a/config/locales/doc_auth/es.yml b/config/locales/doc_auth/es.yml index ac28f0973c0..04c349be4c8 100644 --- a/config/locales/doc_auth/es.yml +++ b/config/locales/doc_auth/es.yml @@ -140,6 +140,7 @@ es: dob: Fecha de nacimiento doc_success: Hemos verificado su información personal first_name: Nombre de pila + id_number: Número de identificación last_name: Apellido selected_file: Archivo seleccionado ssn: Número de seguridad social diff --git a/config/locales/doc_auth/fr.yml b/config/locales/doc_auth/fr.yml index 8f70eefd198..ec39deb9ffb 100644 --- a/config/locales/doc_auth/fr.yml +++ b/config/locales/doc_auth/fr.yml @@ -145,6 +145,7 @@ fr: dob: Date de naissance doc_success: Nous avons vérifié vos informations personnelles first_name: Prénom + id_number: Numéro d'identification last_name: Nom de famille selected_file: Fichier sélectionné ssn: Numéro de sécurité sociale diff --git a/config/locales/in_person_proofing/es.yml b/config/locales/in_person_proofing/es.yml index ecf1b79693a..d98e29e0e4e 100644 --- a/config/locales/in_person_proofing/es.yml +++ b/config/locales/in_person_proofing/es.yml @@ -38,5 +38,7 @@ es: barcode: Estás listo para verificar tu identidad en persona location: Seleccione una ubicación para verificar su identificación state_id: Introduce los datos de su documento de identidad + update_address: Actualiza tu dirección actual + update_state_id: Actualiza la información de tu DNI verify: Por favor verifique su información welcome: Verifica tu identidad en persona diff --git a/config/locales/in_person_proofing/fr.yml b/config/locales/in_person_proofing/fr.yml index e3698a20c6c..16608dbd419 100644 --- a/config/locales/in_person_proofing/fr.yml +++ b/config/locales/in_person_proofing/fr.yml @@ -39,5 +39,7 @@ fr: barcode: Vous êtes prêt à vérifier votre identité en personne location: Sélectionnez un emplacement pour vérifier votre identité state_id: Entrez les informations sur votre pièce d’identité + update_address: Mettre à jour votre adresse actuelle + update_state_id: Mettre à jour les informations sur votre id verify: Veuillez vérifier vos informations welcome: Vérifiez votre identité en personne From 5b3ee2297ee64ee6080665911d5e1dd64dd1fff9 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Wed, 22 Jun 2022 22:00:10 -0400 Subject: [PATCH 13/26] Normalize yaml --- config/locales/doc_auth/fr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/doc_auth/fr.yml b/config/locales/doc_auth/fr.yml index ec39deb9ffb..fb0b280e54f 100644 --- a/config/locales/doc_auth/fr.yml +++ b/config/locales/doc_auth/fr.yml @@ -145,7 +145,7 @@ fr: dob: Date de naissance doc_success: Nous avons vérifié vos informations personnelles first_name: Prénom - id_number: Numéro d'identification + id_number: Numéro d’identification last_name: Nom de famille selected_file: Fichier sélectionné ssn: Numéro de sécurité sociale From de63612c52f55e7651b14d7bec64ccdec4b2c44c Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Thu, 23 Jun 2022 09:08:44 -0400 Subject: [PATCH 14/26] Update es and fr translations --- config/locales/doc_auth/es.yml | 4 ++-- config/locales/doc_auth/fr.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/locales/doc_auth/es.yml b/config/locales/doc_auth/es.yml index 04c349be4c8..4a8d1911c8b 100644 --- a/config/locales/doc_auth/es.yml +++ b/config/locales/doc_auth/es.yml @@ -7,10 +7,10 @@ es: document_capture_dialog: Captura del documento selfie_alt_text: Una foto subida buttons: - change_address: Cambio change_address_label: Cambiar dirección - change_ssn: Cambio + change_label: Cambio change_ssn_label: Cambiar número de Seguridad Social + change_state_id_label: Cambiar ID de estado continue: Continuar start_over: Comenzar de nuevo take_or_upload_picture: 'Toma una foto o diff --git a/config/locales/doc_auth/fr.yml b/config/locales/doc_auth/fr.yml index fb0b280e54f..2efddd6c486 100644 --- a/config/locales/doc_auth/fr.yml +++ b/config/locales/doc_auth/fr.yml @@ -7,10 +7,10 @@ fr: document_capture_dialog: Capture du document selfie_alt_text: Une photo téléversée buttons: - change_address: Changement change_address_label: Changement d’adresse - change_ssn: Changement + change_label: Changement change_ssn_label: Changement de numéro de sécurité sociale + change_state_id_label: Modifier l'ID d'état continue: Continuer start_over: Recommencer take_or_upload_picture: 'Prendre une photo ou From b029f115974ddddda0ecea59aabd9567a4d8b661 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Thu, 23 Jun 2022 09:11:58 -0400 Subject: [PATCH 15/26] Remove unused translations --- config/locales/in_person_proofing/en.yml | 1 - config/locales/in_person_proofing/es.yml | 1 - config/locales/in_person_proofing/fr.yml | 1 - 3 files changed, 3 deletions(-) diff --git a/config/locales/in_person_proofing/en.yml b/config/locales/in_person_proofing/en.yml index 3dfe1531576..3d971f11a5a 100644 --- a/config/locales/in_person_proofing/en.yml +++ b/config/locales/in_person_proofing/en.yml @@ -39,5 +39,4 @@ en: state_id: Enter the information on your ID update_address: Update your current address update_state_id: Update the information on your ID - verify: Please verify your information welcome: Verify your identity in person diff --git a/config/locales/in_person_proofing/es.yml b/config/locales/in_person_proofing/es.yml index d98e29e0e4e..b643c2c8bfa 100644 --- a/config/locales/in_person_proofing/es.yml +++ b/config/locales/in_person_proofing/es.yml @@ -40,5 +40,4 @@ es: state_id: Introduce los datos de su documento de identidad update_address: Actualiza tu dirección actual update_state_id: Actualiza la información de tu DNI - verify: Por favor verifique su información welcome: Verifica tu identidad en persona diff --git a/config/locales/in_person_proofing/fr.yml b/config/locales/in_person_proofing/fr.yml index 16608dbd419..56598cf16e3 100644 --- a/config/locales/in_person_proofing/fr.yml +++ b/config/locales/in_person_proofing/fr.yml @@ -41,5 +41,4 @@ fr: state_id: Entrez les informations sur votre pièce d’identité update_address: Mettre à jour votre adresse actuelle update_state_id: Mettre à jour les informations sur votre id - verify: Veuillez vérifier vos informations welcome: Vérifiez votre identité en personne From c2aa758b5409c7aa65c244aa6cbe04d880969798 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Thu, 23 Jun 2022 09:16:59 -0400 Subject: [PATCH 16/26] changelog: Upcoming Features, In-person proofing, Add verify page to IPP flow From 8d3edf854d75146917001a55aed0cc1a0719e10a Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Thu, 23 Jun 2022 10:16:23 -0400 Subject: [PATCH 17/26] Normalize yaml --- config/locales/doc_auth/fr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/doc_auth/fr.yml b/config/locales/doc_auth/fr.yml index 9070e1cc0b4..be9b7206618 100644 --- a/config/locales/doc_auth/fr.yml +++ b/config/locales/doc_auth/fr.yml @@ -11,7 +11,7 @@ fr: change_address_label: Changement d’adresse change_label: Changement change_ssn_label: Changement de numéro de sécurité sociale - change_state_id_label: Modifier l'ID d'état + change_state_id_label: Modifier l’ID d’état continue: Continuer start_over: Recommencer take_or_upload_picture: 'Prendre une photo ou From 69566321928cdf06f90c0e114d87f774159baba7 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Thu, 23 Jun 2022 10:21:32 -0400 Subject: [PATCH 18/26] Use correct heading --- spec/features/idv/in_person_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/idv/in_person_spec.rb b/spec/features/idv/in_person_spec.rb index a146c468207..c74a6576b2b 100644 --- a/spec/features/idv/in_person_spec.rb +++ b/spec/features/idv/in_person_spec.rb @@ -52,7 +52,7 @@ click_idv_continue # verify page - expect(page).to have_content(t('in_person_proofing.headings.verify')) + expect(page).to have_content(t('doc_auth.headings.verify')) click_idv_continue # phone page From 531f98a2bce37c1c04d7058991f5ee7ba98560fe Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Thu, 23 Jun 2022 10:58:44 -0400 Subject: [PATCH 19/26] Fix broken specs --- spec/features/idv/doc_auth/verify_step_spec.rb | 6 +++--- spec/support/features/doc_auth_helper.rb | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/features/idv/doc_auth/verify_step_spec.rb b/spec/features/idv/doc_auth/verify_step_spec.rb index 3b283b0762c..4fa9ffaa781 100644 --- a/spec/features/idv/doc_auth/verify_step_spec.rb +++ b/spec/features/idv/doc_auth/verify_step_spec.rb @@ -52,7 +52,7 @@ end it 'proceeds to address page prepopulated with defaults if the user clicks change address' do - click_link t('doc_auth.buttons.change_address') + click_button t('doc_auth.buttons.change_address_label') expect(page).to have_current_path(idv_address_path) expect(page).to have_selector("input[value='1 FAKE RD']") @@ -63,7 +63,7 @@ it 'tracks when the user edits their address' do allow_any_instance_of(ApplicationController).to receive(:analytics).and_return(fake_analytics) - click_link t('doc_auth.buttons.change_address') + click_button t('doc_auth.buttons.change_address_label') fill_out_address_form_ok click_idv_continue # address form @@ -76,7 +76,7 @@ end it 'proceeds to the ssn page if the user clicks change ssn and allows user to go back' do - click_button t('doc_auth.buttons.change_ssn') + click_button t('doc_auth.buttons.change_ssn_label') expect(page).to have_current_path(idv_doc_auth_ssn_step) expect(page).to have_content(t('doc_auth.headings.ssn_update')) diff --git a/spec/support/features/doc_auth_helper.rb b/spec/support/features/doc_auth_helper.rb index 01a09537c20..1055f480fb5 100644 --- a/spec/support/features/doc_auth_helper.rb +++ b/spec/support/features/doc_auth_helper.rb @@ -154,7 +154,7 @@ def complete_verify_step def complete_doc_auth_steps_before_address_step(expect_accessible: false) complete_doc_auth_steps_before_verify_step expect(page).to be_axe_clean.according_to :section508, :"best-practice" if expect_accessible - click_link t('doc_auth.buttons.change_address') + click_button t('doc_auth.buttons.change_address_label') end def complete_doc_auth_steps_before_send_link_step From 67194041fee3de894ed3cd98178ebb60cc2f7598 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Thu, 23 Jun 2022 13:34:29 -0400 Subject: [PATCH 20/26] Simplify conditional IPP logic --- app/views/idv/shared/_verify.html.erb | 42 +++++++++++---------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/app/views/idv/shared/_verify.html.erb b/app/views/idv/shared/_verify.html.erb index 9621142650e..fd1dbf66de0 100644 --- a/app/views/idv/shared/_verify.html.erb +++ b/app/views/idv/shared/_verify.html.erb @@ -8,32 +8,24 @@ locals: <%= render PageHeadingComponent.new.with_content(t('doc_auth.headings.verify')) %>
- <% if remote_identity_proofing %> -
- <%= "#{t('doc_auth.forms.first_name')}: #{pii[:first_name]}" %> -
-
- <%= "#{t('doc_auth.forms.last_name')}: #{pii[:last_name]}" %> -
-
- <%= "#{t('doc_auth.forms.dob')}: #{pii[:dob]}" %> -
- <% else %> -
-
-
- <%= "#{t('doc_auth.forms.first_name')}: #{pii[:first_name]}" %> -
-
- <%= "#{t('doc_auth.forms.last_name')}: #{pii[:last_name]}" %> -
+
+
+
+ <%= "#{t('doc_auth.forms.first_name')}: #{pii[:first_name]}" %> +
+
+ <%= "#{t('doc_auth.forms.last_name')}: #{pii[:last_name]}" %> +
+
+ <%= "#{t('doc_auth.forms.dob')}: #{pii[:dob]}" %> +
+ <% if !remote_identity_proofing %>
- <%= "#{t('doc_auth.forms.dob')}: #{pii[:dob]}" %> -
-
<%= "#{t('doc_auth.forms.id_number')}: #{pii[:state_id_number]}" %>
-
+ <% end %> +
+ <% if !remote_identity_proofing %>
<%= button_to( step_url.call(step: :redo_state_id), @@ -42,8 +34,8 @@ locals: 'aria-label': t('doc_auth.buttons.change_state_id_label'), ) { t('doc_auth.buttons.change_label') } %>
-
- <% end %> + <% end %> +
From 06aa73272739235072b36fa558023fe0d1d0d7a2 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Fri, 24 Jun 2022 09:53:50 -0400 Subject: [PATCH 21/26] Check user info on the verify page --- lib/idp/constants.rb | 1 + spec/features/idv/in_person_spec.rb | 12 ++++++++++++ spec/support/features/in_person_helper.rb | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/idp/constants.rb b/lib/idp/constants.rb index 87f7193e854..7ea36719bee 100644 --- a/lib/idp/constants.rb +++ b/lib/idp/constants.rb @@ -33,5 +33,6 @@ module Constants MOCK_IDV_APPLICANT_WITH_PHONE = MOCK_IDV_APPLICANT_WITH_SSN.merge(phone: '12025551212').freeze MOCK_IDV_APPLICANT_FULL_STATE_ID_JURISDICTION = 'North Dakota' + MOCK_IDV_APPLICANT_FULL_STATE = 'Montana' end end diff --git a/spec/features/idv/in_person_spec.rb b/spec/features/idv/in_person_spec.rb index c74a6576b2b..6f6a44e81b1 100644 --- a/spec/features/idv/in_person_spec.rb +++ b/spec/features/idv/in_person_spec.rb @@ -53,6 +53,18 @@ # verify page expect(page).to have_content(t('doc_auth.headings.verify')) + # verify information being displayed + expect(page).to have_text(InPersonHelper::GOOD_FIRST_NAME) + expect(page).to have_text(InPersonHelper::GOOD_LAST_NAME) + expect(page).to have_text(InPersonHelper::GOOD_DOB) + expect(page).to have_text(InPersonHelper::GOOD_STATE_ID_NUMBER) + expect(page).to have_text(InPersonHelper::GOOD_ADDRESS1) + expect(page).to have_text(InPersonHelper::GOOD_ADDRESS2) + expect(page).to have_text(InPersonHelper::GOOD_CITY) + expect(page).to have_text(InPersonHelper::GOOD_ZIPCODE) + expect(page).to have_text(Idp::Constants::MOCK_IDV_APPLICANT[:state]) + expect(page).to have_text('9**-**-***4') + click_idv_continue # phone page diff --git a/spec/support/features/in_person_helper.rb b/spec/support/features/in_person_helper.rb index 928f7211e7e..42227b5e0f6 100644 --- a/spec/support/features/in_person_helper.rb +++ b/spec/support/features/in_person_helper.rb @@ -9,7 +9,7 @@ module InPersonHelper GOOD_ADDRESS2 = Idp::Constants::MOCK_IDV_APPLICANT[:address2] GOOD_CITY = Idp::Constants::MOCK_IDV_APPLICANT[:city] GOOD_ZIPCODE = Idp::Constants::MOCK_IDV_APPLICANT[:zipcode] - GOOD_STATE = Idp::Constants::MOCK_IDV_APPLICANT_FULL_STATE_ID_JURISDICTION + GOOD_STATE = Idp::Constants::MOCK_IDV_APPLICANT_FULL_STATE def fill_out_state_id_form_ok fill_in t('in_person_proofing.form.state_id.first_name'), with: GOOD_FIRST_NAME From 3c582b3ca4a28fddd22a42530977f00b8ecbd802 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Fri, 24 Jun 2022 10:31:23 -0400 Subject: [PATCH 22/26] Pre-populate same address radio button --- app/views/idv/in_person/address.html.erb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/idv/in_person/address.html.erb b/app/views/idv/in_person/address.html.erb index ae1c45716fe..f24f0d54503 100644 --- a/app/views/idv/in_person/address.html.erb +++ b/app/views/idv/in_person/address.html.erb @@ -70,6 +70,7 @@ <%= render ValidatedFieldComponent.new( as: :radio_buttons, + checked: pii[:same_address_as_id], collection: [ [t('in_person_proofing.form.address.same_address_choice_yes'), true], [t('in_person_proofing.form.address.same_address_choice_no'), false], From 19e601067609a4c366bbb3fa4ca398ca882f0e38 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Fri, 24 Jun 2022 10:31:48 -0400 Subject: [PATCH 23/26] Navigate to each update page --- spec/features/idv/in_person_spec.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/spec/features/idv/in_person_spec.rb b/spec/features/idv/in_person_spec.rb index 6f6a44e81b1..39bc39195f3 100644 --- a/spec/features/idv/in_person_spec.rb +++ b/spec/features/idv/in_person_spec.rb @@ -65,6 +65,24 @@ expect(page).to have_text(Idp::Constants::MOCK_IDV_APPLICANT[:state]) expect(page).to have_text('9**-**-***4') + # click upate state ID button + click_button t('doc_auth.buttons.change_state_id_label') + expect(page).to have_content(t('in_person_proofing.headings.update_state_id')) + click_idv_continue + expect(page).to have_content(t('doc_auth.headings.verify')) + + # click upate address button + click_button t('doc_auth.buttons.change_address_label') + expect(page).to have_content(t('in_person_proofing.headings.update_address')) + click_idv_continue + expect(page).to have_content(t('doc_auth.headings.verify')) + + # click upate ssn button + click_button t('doc_auth.buttons.change_ssn_label') + expect(page).to have_content(t('doc_auth.headings.ssn_update')) + fill_out_ssn_form_ok + click_idv_continue + expect(page).to have_content(t('doc_auth.headings.verify')) click_idv_continue # phone page From e8051ecbc03883d8a7f439f06e8219628843ff91 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Fri, 24 Jun 2022 10:55:52 -0400 Subject: [PATCH 24/26] Add spec for verify step call --- spec/services/idv/steps/ipp/verify_step_spec.rb | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/spec/services/idv/steps/ipp/verify_step_spec.rb b/spec/services/idv/steps/ipp/verify_step_spec.rb index bfc949757b5..fabb6abf606 100644 --- a/spec/services/idv/steps/ipp/verify_step_spec.rb +++ b/spec/services/idv/steps/ipp/verify_step_spec.rb @@ -12,8 +12,14 @@ ) end + let(:pii) do + Idp::Constants::MOCK_IDV_APPLICANT_WITH_SSN.dup + end + let(:flow) do - Idv::Flows::InPersonFlow.new(controller, {}, 'idv/in_person') + Idv::Flows::InPersonFlow.new(controller, {}, 'idv/in_person').tap do |flow| + flow.flow_session = { pii_from_user: pii } + end end subject(:step) do @@ -21,8 +27,14 @@ end describe '#call' do - it 'works' do + it 'moves PII into IDV session' do + expect(flow.idv_session).to_not have_key 'applicant' + expect(flow.flow_session).to have_key :pii_from_user step.call + + expect(flow.flow_session).to_not have_key :pii_from_user + expect(flow.idv_session).to have_key 'applicant' + expect(flow.idv_session['applicant']).to include(pii) end end end From c082fd2e50a80240c7a0f5d55eb9d5a3d09acc4b Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Fri, 24 Jun 2022 15:51:12 -0400 Subject: [PATCH 25/26] Remove unnecessary padding --- app/views/idv/shared/_verify.html.erb | 2 +- spec/features/idv/in_person_spec.rb | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/views/idv/shared/_verify.html.erb b/app/views/idv/shared/_verify.html.erb index fd1dbf66de0..db882ffc062 100644 --- a/app/views/idv/shared/_verify.html.erb +++ b/app/views/idv/shared/_verify.html.erb @@ -8,7 +8,7 @@ locals: <%= render PageHeadingComponent.new.with_content(t('doc_auth.headings.verify')) %>
-
+
<%= "#{t('doc_auth.forms.first_name')}: #{pii[:first_name]}" %> diff --git a/spec/features/idv/in_person_spec.rb b/spec/features/idv/in_person_spec.rb index 39bc39195f3..1f676931827 100644 --- a/spec/features/idv/in_person_spec.rb +++ b/spec/features/idv/in_person_spec.rb @@ -53,7 +53,6 @@ # verify page expect(page).to have_content(t('doc_auth.headings.verify')) - # verify information being displayed expect(page).to have_text(InPersonHelper::GOOD_FIRST_NAME) expect(page).to have_text(InPersonHelper::GOOD_LAST_NAME) expect(page).to have_text(InPersonHelper::GOOD_DOB) From 35c05f91314d7fe958113fde84b265d3bbe531a4 Mon Sep 17 00:00:00 2001 From: Sheldon Bachstein Date: Mon, 27 Jun 2022 19:29:01 -0400 Subject: [PATCH 26/26] Defensive programming --- app/services/idv/steps/ipp/ssn_step.rb | 2 +- app/services/idv/steps/ssn_step.rb | 2 +- spec/features/idv/in_person_spec.rb | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/services/idv/steps/ipp/ssn_step.rb b/app/services/idv/steps/ipp/ssn_step.rb index 9f2c27ce77d..1b4b95a4b58 100644 --- a/app/services/idv/steps/ipp/ssn_step.rb +++ b/app/services/idv/steps/ipp/ssn_step.rb @@ -10,7 +10,7 @@ def call def extra_view_variables { - updating_ssn: flow_session[:pii_from_user].has_key?(:ssn), + updating_ssn: flow_session[:pii_from_user][:ssn].present?, } end diff --git a/app/services/idv/steps/ssn_step.rb b/app/services/idv/steps/ssn_step.rb index 64513455e1e..c80825850d1 100644 --- a/app/services/idv/steps/ssn_step.rb +++ b/app/services/idv/steps/ssn_step.rb @@ -11,7 +11,7 @@ def call def extra_view_variables { - updating_ssn: flow_session[:pii_from_doc].has_key?(:ssn), + updating_ssn: flow_session[:pii_from_doc][:ssn].present?, } end diff --git a/spec/features/idv/in_person_spec.rb b/spec/features/idv/in_person_spec.rb index 1f676931827..e691e773a24 100644 --- a/spec/features/idv/in_person_spec.rb +++ b/spec/features/idv/in_person_spec.rb @@ -64,19 +64,19 @@ expect(page).to have_text(Idp::Constants::MOCK_IDV_APPLICANT[:state]) expect(page).to have_text('9**-**-***4') - # click upate state ID button + # click update state ID button click_button t('doc_auth.buttons.change_state_id_label') expect(page).to have_content(t('in_person_proofing.headings.update_state_id')) click_idv_continue expect(page).to have_content(t('doc_auth.headings.verify')) - # click upate address button + # click update address button click_button t('doc_auth.buttons.change_address_label') expect(page).to have_content(t('in_person_proofing.headings.update_address')) click_idv_continue expect(page).to have_content(t('doc_auth.headings.verify')) - # click upate ssn button + # click update ssn button click_button t('doc_auth.buttons.change_ssn_label') expect(page).to have_content(t('doc_auth.headings.ssn_update')) fill_out_ssn_form_ok