diff --git a/app/assets/images/carat-right.svg b/app/assets/images/carat-right.svg new file mode 100644 index 00000000000..3eb96ad96ab --- /dev/null +++ b/app/assets/images/carat-right.svg @@ -0,0 +1 @@ +carat-right \ No newline at end of file diff --git a/app/assets/stylesheets/variables/_app.scss b/app/assets/stylesheets/variables/_app.scss index c0aeded5bc1..2125b2ec0fb 100644 --- a/app/assets/stylesheets/variables/_app.scss +++ b/app/assets/stylesheets/variables/_app.scss @@ -13,7 +13,7 @@ $line-height: 1.5 !default; $bold-font-weight: bold !default; $heading-font-family: $serif-font-family !default; $heading-font-weight: bold !default; -$heading-line-height: 1.3 !default; +$heading-line-height: 1.5 !default; $caps-letter-spacing: 1px !default; $line-height-0: .75 !default; // For when a tighter-than-normal leading is desired. diff --git a/app/decorators/service_provider_session_decorator.rb b/app/decorators/service_provider_session_decorator.rb index 8e91dce7f04..2d6e511ec95 100644 --- a/app/decorators/service_provider_session_decorator.rb +++ b/app/decorators/service_provider_session_decorator.rb @@ -103,6 +103,10 @@ def cancel_link_url view_context.sign_up_start_url(request_id: sp_session[:request_id]) end + def failure_to_proof_url + sp.failure_to_proof_url || sp_return_url + end + def sp_alert?(path) sp_alert.present? && !sp_alert[:exclude_paths]&.include?(path) end diff --git a/app/decorators/session_decorator.rb b/app/decorators/session_decorator.rb index bac80eb89ba..1a890710051 100644 --- a/app/decorators/session_decorator.rb +++ b/app/decorators/session_decorator.rb @@ -31,6 +31,8 @@ def cancel_link_url view_context.root_url end + def failure_to_proof_url; end + def sp_name; end def sp_agency; end diff --git a/app/presenters/idv/idv_failure_presenter.rb b/app/presenters/idv/idv_failure_presenter.rb index bae0cdc260d..4bbaf6d8a6f 100644 --- a/app/presenters/idv/idv_failure_presenter.rb +++ b/app/presenters/idv/idv_failure_presenter.rb @@ -30,24 +30,7 @@ def message end def next_steps - [help_step, sp_step, profile_step].compact - end - - private - - def help_step - link_to t('idv.messages.help_center_html'), MarketingSite.help_url - end - - def sp_step - return unless (sp_name = decorated_session.sp_name) - link = link_to(sp_name, decorated_session.sp_return_url) - t('idv.messages.jurisdiction.sp_support', link: link) - end - - def profile_step - link = link_to(t('idv.messages.jurisdiction.profile_link'), account_path) - t('idv.messages.jurisdiction.profile', link: link) + [] end end end diff --git a/app/presenters/idv/jurisdiction_failure_presenter.rb b/app/presenters/idv/jurisdiction_failure_presenter.rb index 29e18bc0964..b3be3840237 100644 --- a/app/presenters/idv/jurisdiction_failure_presenter.rb +++ b/app/presenters/idv/jurisdiction_failure_presenter.rb @@ -34,7 +34,7 @@ def message end def next_steps - [try_again_step, sp_step, profile_step].compact + [] end private @@ -42,21 +42,5 @@ def next_steps def i18n_args jurisdiction ? { state: state_name_for_abbrev(jurisdiction) } : {} end - - def try_again_step - link = link_to(t('idv.messages.jurisdiction.try_again_link'), idv_jurisdiction_path) - t('idv.messages.jurisdiction.try_again', link: link) - end - - def sp_step - return unless (sp_name = decorated_session.sp_name) - link = link_to(sp_name, decorated_session.sp_return_url) - t('idv.messages.jurisdiction.sp_support', link: link) - end - - def profile_step - link = link_to(t('idv.messages.jurisdiction.profile_link'), account_path) - t('idv.messages.jurisdiction.profile', link: link) - end end end diff --git a/app/presenters/idv/max_attempts_failure_presenter.rb b/app/presenters/idv/max_attempts_failure_presenter.rb index 33df16ab249..d3ff836993c 100644 --- a/app/presenters/idv/max_attempts_failure_presenter.rb +++ b/app/presenters/idv/max_attempts_failure_presenter.rb @@ -32,28 +32,7 @@ def message end def next_steps - [sp_step, help_step, profile_step].compact - end - - private - - def sp_step - return unless (sp_name = decorated_session.sp_name) - link = link_to(sp_name, decorated_session.sp_return_url) - t('idv.messages.jurisdiction.sp_support', link: link) - end - - def help_step - link = link_to( - t('idv.messages.read_about_security_and_privacy.link'), - MarketingSite.help_privacy_and_security_url - ) - t('idv.messages.read_about_security_and_privacy.text', link: link) - end - - def profile_step - link = link_to(t('idv.messages.jurisdiction.profile_link'), account_path) - t('idv.messages.jurisdiction.profile', link: link) + [] end end end diff --git a/app/presenters/idv/ssn_failure_presenter.rb b/app/presenters/idv/ssn_failure_presenter.rb index 7250f3c9866..644d128bbd8 100644 --- a/app/presenters/idv/ssn_failure_presenter.rb +++ b/app/presenters/idv/ssn_failure_presenter.rb @@ -31,7 +31,7 @@ def message end def next_steps - [try_again_step, sign_out_step, profile_step] + [] end private diff --git a/app/views/idv/shared/_failure_to_proof_url.html.slim b/app/views/idv/shared/_failure_to_proof_url.html.slim new file mode 100644 index 00000000000..20691c38430 --- /dev/null +++ b/app/views/idv/shared/_failure_to_proof_url.html.slim @@ -0,0 +1,9 @@ +- if decorated_session.sp_name + hr + .mb2.mt2 + .right = link_to image_tag(asset_url('carat-right.svg'), size: '10'), + decorated_session.failure_to_proof_url, class: 'bold block btn-link text-decoration-none' + = link_to t('idv.failure.help.get_help_html', sp_name: decorated_session.sp_name), + decorated_session.failure_to_proof_url, + class: 'block btn-link text-decoration-none' + hr diff --git a/app/views/idv/shared/verification_failure.html.slim b/app/views/idv/shared/verification_failure.html.slim index 34cac002f37..72430f36e3f 100644 --- a/app/views/idv/shared/verification_failure.html.slim +++ b/app/views/idv/shared/verification_failure.html.slim @@ -1,5 +1,7 @@ = render 'shared/failure', presenter: presenter p == presenter.warning_message -.mt4 - = link_to presenter.button_text, presenter.button_path, class: 'btn btn-primary' += render 'idv/shared/failure_to_proof_url', presenter: presenter + +.mt3 + = link_to presenter.button_text, presenter.button_path, class: 'btn btn-primary btn-link' diff --git a/app/views/shared/_failure.html.slim b/app/views/shared/_failure.html.slim index bdf4d8ac5f3..fec4ea47aa5 100644 --- a/app/views/shared/_failure.html.slim +++ b/app/views/shared/_failure.html.slim @@ -12,6 +12,7 @@ p == presenter.description - if presenter.message.present? h2.h4.mb2.mt3.my0 = presenter.message + = render 'idv/shared/failure_to_proof_url', presenter: presenter - presenter.next_steps.each do |step| p == step diff --git a/config/locales/idv/en.yml b/config/locales/idv/en.yml index 04ff62e786c..688c82967ae 100644 --- a/config/locales/idv/en.yml +++ b/config/locales/idv/en.yml @@ -44,6 +44,8 @@ en: errors: link: please contact us text: If you keep getting these errors, %{link}, or try again tomorrow. + help: + get_help_html: Get help at %{sp_name} phone: fail: For your security, identity verification for your account is locked for 24 hours. @@ -108,14 +110,11 @@ en: dupe_ssn2_link: sign out now and sign back in hardfail: We can't log you in right now, but you can try verifying your identity again in %{hours} hours. - help_center_html: Visit our Help Center to learn more about - verifying your account. jurisdiction: no_id: I don't have a state-issued ID no_id_failure: We're working hard to add more ways to verify your identity. profile: To access your account in the future, you can %{link}. profile_link: view your account here - sp_support: Visit %{link} for more information. try_again: Make a mistake? You can %{link}. try_again_link: try again unsupported_jurisdiction_failure: We're working hard to add more states and @@ -136,9 +135,6 @@ en: - in your name, or a family member's name - not a virtual phone (such as Google Voice or Skype) - a U.S. number - read_about_security_and_privacy: - link: read about how login.gov keeps your information safe - text: You can %{link} on our help page. return_to_profile: "‹ Return to your login.gov profile" return_to_sp_html: You can now log into %{sp}. review: diff --git a/config/locales/idv/es.yml b/config/locales/idv/es.yml index 489e9f06df3..2647bec0619 100644 --- a/config/locales/idv/es.yml +++ b/config/locales/idv/es.yml @@ -44,6 +44,8 @@ es: errors: link: contáctanos text: Si sigues recibiendo estos errores, %{link} o vuelve a intentarlo mañana. + help: + get_help_html: Obtener ayuda en %{sp_name} phone: fail: Para su seguridad, la verificación de identidad de su cuenta está bloqueada durante 24 horas. @@ -105,15 +107,12 @@ es: dupe_ssn2_html: Por favor %{link} con el email que utilizó originalmente. dupe_ssn2_link: Cerrar ahora y volver a iniciar sesión hardfail: NOT TRANSLATED YET - help_center_html: Visite nuestro Centro de Ayuda para obtener - más información sobre la verificación de su cuenta. jurisdiction: no_id: No tengo una identificación emitida por el estado no_id_failure: Estamos trabajando arduamente para agregar más formas de verificar su identidad. profile: Para acceder a su cuenta en el futuro, puede %{link}. profile_link: mira tu cuenta aquí - sp_support: Visita %{link} para obtener más información. try_again: "¿Cometer un error? Puedes %{link}." try_again_link: intentarlo de nuevo unsupported_jurisdiction_failure: Estamos trabajando duro para agregar más @@ -136,9 +135,6 @@ es: - no es un teléfono virtual (como Google Voice o Skype) - no es un número de teléfono prepago - un número de EE. UU. - read_about_security_and_privacy: - link: leer sobre cómo login.gov mantiene su información segura - text: Puede %{link} en nuestra página de ayuda. return_to_profile: NOT TRANSLATED YET return_to_sp_html: NOT TRANSLATED YET review: diff --git a/config/locales/idv/fr.yml b/config/locales/idv/fr.yml index 0534e6a74c6..3e3aa266df2 100644 --- a/config/locales/idv/fr.yml +++ b/config/locales/idv/fr.yml @@ -48,6 +48,8 @@ fr: errors: link: contactez-nous text: Si vous continuez à recevoir ces erreurs, %{link} ou réessayez demain. + help: + get_help_html: Obtenir de l'aide à %{sp_name} phone: fail: Pour votre sécurité, la vérification d'identité de votre compte est verrouillée pendant 24 heures. @@ -111,15 +113,12 @@ fr: originalement. dupe_ssn2_link: déconnectez-vous puis connectez-vous à nouveau hardfail: NOT TRANSLATED YET - help_center_html: Visitez notre Centre d'aide pour en apprendre - davantage sur la façon dont nous vérifions votre compte. jurisdiction: no_id: Je n'ai pas de carte d'identité officielle no_id_failure: Nous travaillons dur pour ajouter plus de moyens de vérifier votre identité. profile: Pour accéder à votre compte dans le futur, vous pouvez %{link}. profile_link: voir votre compte ici - sp_support: Visitez %{link} pour plus d'informations. try_again: Faire une erreur? Vous pouvez %{link}. try_again_link: réessayer unsupported_jurisdiction_failure: Nous travaillons dur pour ajouter plus d'états @@ -143,9 +142,6 @@ fr: - pas un téléphone virtuel (comme Google Voice ou Skype) - pas un numéro de téléphone prépayé - un numéro américain - read_about_security_and_privacy: - link: lire comment login.gov protège vos informations - text: Vous pouvez %{link} sur notre page d'aide. return_to_profile: NOT TRANSLATED YET return_to_sp_html: NOT TRANSLATED YET review: diff --git a/spec/decorators/service_provider_session_decorator_spec.rb b/spec/decorators/service_provider_session_decorator_spec.rb index 6336bd8da51..b8b76baeaa6 100644 --- a/spec/decorators/service_provider_session_decorator_spec.rb +++ b/spec/decorators/service_provider_session_decorator_spec.rb @@ -189,4 +189,19 @@ to eq 'https://www.example.com/sign_up/start' end end + + describe '#failure_to_proof_url' do + it 'returns the failure_to_proof_url if present on the sp' do + url = 'https://www.example.com/fail' + allow_any_instance_of(ServiceProvider).to receive(:failure_to_proof_url).and_return(url) + expect(subject.failure_to_proof_url).to eq url + end + + it 'returns the return_to_sp_url if the failure_to_proof_url is not present on the sp' do + url = 'https://www.example.com/' + allow_any_instance_of(ServiceProvider).to receive(:failure_to_proof_url).and_return(nil) + allow_any_instance_of(ServiceProvider).to receive(:return_to_sp_url).and_return(url) + expect(subject.failure_to_proof_url).to eq url + end + end end diff --git a/spec/presenters/idv/idv_failure_presenter_spec.rb b/spec/presenters/idv/idv_failure_presenter_spec.rb index fad49064627..bdb860215a2 100644 --- a/spec/presenters/idv/idv_failure_presenter_spec.rb +++ b/spec/presenters/idv/idv_failure_presenter_spec.rb @@ -48,38 +48,8 @@ describe '#next_steps' do subject { presenter.next_steps } - it 'includes `help_step`, `sp_step`, and `profile_step`' do - expect(subject).to eq( - [ - presenter.send(:help_step), - presenter.send(:sp_step), - presenter.send(:profile_step), - ] - ) - end - end - - describe '#help_step' do - subject { presenter.send(:help_step) } - - it 'includes help url' do - expect(subject).to include(MarketingSite.help_url) - end - end - - describe '#sp_step' do - subject { presenter.send(:sp_step) } - - it 'includes sp url' do - expect(subject).to include(decorated_session.sp_return_url) - end - end - - describe '#profile_step' do - subject { presenter.send(:profile_step) } - - it 'includes profile url' do - expect(subject).to include(view_context.account_path) + it 'is empty' do + expect(subject).to eq([]) end end diff --git a/spec/presenters/idv/ssn_failure_presenter_spec.rb b/spec/presenters/idv/ssn_failure_presenter_spec.rb index 476a10cf170..c57127fce0e 100644 --- a/spec/presenters/idv/ssn_failure_presenter_spec.rb +++ b/spec/presenters/idv/ssn_failure_presenter_spec.rb @@ -23,14 +23,8 @@ describe '#next_steps' do subject { presenter.next_steps } - it 'includes `try_again_step`, `sign_out_step`, and `profile_step`' do - expect(subject).to eq( - [ - presenter.send(:try_again_step), - presenter.send(:sign_out_step), - presenter.send(:profile_step), - ] - ) + it 'is empty' do + expect(subject).to eq([]) end end