Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
ef33b3c
Move user suspended check for sign-in (#9147)
zachmargolis Sep 6, 2023
fa4183d
Update IDV report to support multiple issuers (LG-10875) (#9148)
zachmargolis Sep 6, 2023
1c21441
Avoid duplicate analytics event for PIV/CAC login (#9150)
aduth Sep 6, 2023
973f44c
Update Mobile Docs with iOS Chrome Info (#9152)
charleyf Sep 6, 2023
6b221d2
Do not end session when switching languages during forced re-authenti…
Sep 6, 2023
b230556
Fix Acuant Error Handler Function Naming (#9149)
charleyf Sep 6, 2023
689bef4
LG-10681: Remove ArcGIS API Usage (#9154)
NavaTim Sep 6, 2023
50e6b15
LG-10871: Direct "Learn more" Face/Touch link to help article (#9155)
aduth Sep 7, 2023
f4a32ae
LG-10330 No PO Results Component (#9145)
gina-yamada Sep 7, 2023
7102cc5
LG-10343 Enable the profile backfill job (#9162)
jmhooper Sep 7, 2023
aed1a17
LG-10891 Add a job for migrating user password digests to multi-regio…
jmhooper Sep 7, 2023
e260f6d
Convert some simpler feature tests to controller and view tests to im…
Sep 7, 2023
0f95da8
LG-10614 Update sms copy (#9118)
svalexander Sep 7, 2023
885af33
LG-10886 start moving ssn to idv session (#9129)
soniaconnolly Sep 7, 2023
e7cb9c3
Consolidate / standardize URL handling for after_sign_in_path_for (#9…
aduth Sep 8, 2023
ba80260
Memoize options method on TwoFactorLoginOptionsPresenter (#9173)
Sep 8, 2023
76e1df6
10787: Extract hook from Full Address Search (#9163)
allthesignals Sep 8, 2023
971670b
Do not query for PivCacConfiguration when x509_dn_uuid is blank (#9174)
Sep 8, 2023
1eac334
Cleanup ThreatMetrix CSP before_action name now that in_person SSN st…
soniaconnolly Sep 8, 2023
4852aed
Fix Face/Touch "Learn more" grammar for French/Spanish (#9161)
aduth Sep 8, 2023
a5ed9fb
Identity Verification report job to immediately exit when s3 reports…
amirbey Sep 8, 2023
ef9bad6
LG-10273 idv_session cleanup - remove unused properties (#9178)
soniaconnolly Sep 8, 2023
499c128
Couple more places to add idv_session.ssn (#9168)
soniaconnolly Sep 8, 2023
a24506e
LG-10530: Improve Verify by Mail controller & route names (#9136)
matthinz Sep 8, 2023
52d600f
LG-10858 Improve tappable area of LDP footer for mobile users (#9156)
kevinsmaster5 Sep 11, 2023
3387b61
Fix behavior for PIV/CAC declined setup from sign-in (#9146)
aduth Sep 11, 2023
607f6c4
LG-10347 Make the key ID the session encryptor uses configurable (#9171)
jmhooper Sep 11, 2023
f4bcac3
LG-10300: Add optional info alert to in person proofing location sear…
Sep 11, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/assets/images/info-pin-map.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 9 additions & 1 deletion app/assets/stylesheets/components/_footer.scss
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ body {
}

a {
@include u-padding-y(1);
text-decoration: none;

@include at-media('tablet') {
@include u-padding-y(0);
&,
&:visited {
color: color($theme-link-reverse-color);
Expand Down Expand Up @@ -59,6 +61,12 @@ body {
}

.footer__links {
@include u-padding-y(1);
@include u-padding-x(1);
display: flex;
flex-wrap: wrap;

@include at-media('tablet') {
@include u-padding-y(1);
@include u-padding-x(0);
}
}
6 changes: 6 additions & 0 deletions app/controllers/accounts_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,10 @@ def reauthentication

redirect_to login_two_factor_options_path
end

private

def confirm_user_is_not_suspended
redirect_to user_please_call_url if current_user.suspended?
end
end
41 changes: 11 additions & 30 deletions app/controllers/application_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -184,18 +184,7 @@ def service_provider_request
@service_provider_request ||= ServiceProviderRequestProxy.from_uuid(params[:request_id])
end

def add_piv_cac_setup_url
session[:needs_to_setup_piv_cac_after_sign_in] ? login_add_piv_cac_prompt_url : nil
end

def service_provider_mfa_setup_url
service_provider_mfa_policy.user_needs_sp_auth_method_setup? ?
authentication_methods_setup_url : nil
end

def fix_broken_personal_key_url
return if !current_user.broken_personal_key?

flash[:info] = t('account.personal_key.needs_new')

pii_unlocked = Pii::Cacher.new(current_user, user_session).exists_in_session?
Expand All @@ -217,26 +206,21 @@ def fix_broken_personal_key_url
end

def after_sign_in_path_for(_user)
accept_rules_of_use_url ||
service_provider_mfa_setup_url ||
add_piv_cac_setup_url ||
fix_broken_personal_key_url ||
user_session.delete(:stored_location) ||
sp_session_request_url_with_updated_params ||
signed_in_url
return rules_of_use_path if !current_user.accepted_rules_of_use_still_valid?
return user_please_call_url if current_user.suspended?
return authentication_methods_setup_url if user_needs_sp_auth_method_setup?
return login_add_piv_cac_prompt_url if session[:needs_to_setup_piv_cac_after_sign_in].present?
return fix_broken_personal_key_url if current_user.broken_personal_key?
return user_session.delete(:stored_location) if user_session.key?(:stored_location)
return reactivate_account_url if user_needs_to_reactivate_account?
return sp_session_request_url_with_updated_params if sp_session.key?(:request_url)
signed_in_url
end

def signed_in_url
return user_two_factor_authentication_url unless user_fully_authenticated?
return user_please_call_url if current_user.suspended?
return reactivate_account_url if user_needs_to_reactivate_account?
return url_for_pending_profile_reason if user_has_pending_profile?
return backup_code_reminder_url if user_needs_backup_code_reminder?
account_url
end

def accept_rules_of_use_url
rules_of_use_path unless current_user.accepted_rules_of_use_still_valid?
account_path
end

def after_mfa_setup_path
Expand Down Expand Up @@ -291,10 +275,6 @@ def user_fully_authenticated?
two_factor_enabled?
end

def confirm_user_is_not_suspended
redirect_to user_please_call_url if current_user.suspended?
end

def confirm_two_factor_authenticated
authenticate_user!(force: true)

Expand Down Expand Up @@ -404,6 +384,7 @@ def service_provider_mfa_policy
phishing_resistant_requested: sp_session[:phishing_resistant_requested],
)
end
delegate :user_needs_sp_auth_method_setup?, to: :service_provider_mfa_policy

def sp_session
session.fetch(:sp, {})
Expand Down
10 changes: 0 additions & 10 deletions app/controllers/concerns/idv/threat_metrix_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,6 @@ module ThreatMetrixConcern
def override_csp_for_threat_metrix
return unless FeatureManagement.proofing_device_profiling_collecting_enabled?

return if params[:step] != 'ssn'

threat_metrix_csp_overrides
end

# Remove this duplication once in_person_controller is no longer in use
# for their SSN step
def override_csp_for_threat_metrix_no_fsm
return unless FeatureManagement.proofing_device_profiling_collecting_enabled?

threat_metrix_csp_overrides
end

Expand Down
11 changes: 7 additions & 4 deletions app/controllers/concerns/idv/verify_info_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,9 @@ def resolution_rate_limiter
end

def ssn_rate_limiter
ssn = idv_session.ssn || pii[:ssn]
@ssn_rate_limiter ||= RateLimiter.new(
target: Pii::Fingerprinter.fingerprint(pii[:ssn]),
target: Pii::Fingerprinter.fingerprint(ssn),
rate_limit_type: :proof_ssn,
)
end
Expand Down Expand Up @@ -223,7 +224,7 @@ def async_state_done(current_async_state)
end

def next_step_url
return idv_gpo_url if FeatureManagement.idv_by_mail_only?
return idv_request_letter_url if FeatureManagement.idv_by_mail_only?
idv_phone_url
end

Expand Down Expand Up @@ -300,17 +301,19 @@ def log_idv_verification_submitted_event(success: false, failure_reason: nil)
last_name: pii_from_doc[:last_name],
date_of_birth: pii_from_doc[:dob],
address: pii_from_doc[:address1],
ssn: pii_from_doc[:ssn],
ssn: idv_session.ssn || pii_from_doc[:ssn],
failure_reason: failure_reason,
)
end

def check_ssn
Idv::SsnForm.new(current_user).submit(ssn: pii[:ssn])
ssn = idv_session.ssn || pii[:ssn]
Idv::SsnForm.new(current_user).submit(ssn: ssn)
end

def move_applicant_to_idv_session
idv_session.applicant = pii
idv_session.applicant[:ssn] ||= idv_session.ssn
idv_session.applicant['uuid'] = current_user.uuid
delete_pii
end
Expand Down
4 changes: 2 additions & 2 deletions app/controllers/concerns/idv_step_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ module IdvStepConcern
end

def confirm_no_pending_gpo_profile
redirect_to idv_gpo_verify_url if current_user&.gpo_verification_pending_profile?
redirect_to idv_verify_by_mail_enter_code_url if current_user&.gpo_verification_pending_profile?
end

def confirm_no_pending_in_person_enrollment
Expand Down Expand Up @@ -52,7 +52,7 @@ def flow_path
private

def confirm_ssn_step_complete
return if pii.present? && pii[:ssn].present?
return if pii.present? && (idv_session.ssn.present? || pii[:ssn].present?)
redirect_to prev_url
end

Expand Down
4 changes: 2 additions & 2 deletions app/controllers/concerns/rate_limit_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ def idv_attempter_rate_limited?(rate_limit_type)
end

def pii_ssn
return unless defined?(flow_session) && user_session
pii_from_doc_ssn = flow_session[:pii_from_doc]&.[](:ssn)
return unless defined?(flow_session) && defined?(idv_session) && user_session
pii_from_doc_ssn = idv_session&.ssn || flow_session[:pii_from_doc]&.[](:ssn)
return pii_from_doc_ssn if pii_from_doc_ssn
flow_session[:pii_from_user]&.[](:ssn)
end
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/concerns/verify_profile_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ module VerifyProfileConcern
private

def url_for_pending_profile_reason
return idv_gpo_verify_url if current_user.gpo_verification_pending_profile?
return idv_verify_by_mail_enter_code_url if current_user.gpo_verification_pending_profile?
return idv_in_person_ready_to_verify_url if current_user.in_person_pending_profile?
return idv_please_call_url if current_user.fraud_review_pending?
idv_not_verified_url if current_user.fraud_rejection?
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module Idv
class GpoVerifyController < ApplicationController
module Idv::ByMail
class EnterCodeController < ApplicationController
include IdvSession
include StepIndicatorConcern
include Idv::StepIndicatorConcern
include FraudReviewConcern

prepend_before_action :note_if_user_did_not_receive_letter
Expand All @@ -13,7 +13,7 @@ def index
# slightly different copy on this screen.
@user_did_not_receive_letter = !!params[:did_not_receive_letter]

analytics.idv_gpo_verification_visited(
analytics.idv_verify_by_mail_enter_code_visited(
source: if @user_did_not_receive_letter then 'gpo_reminder_email' end,
)

Expand Down Expand Up @@ -52,15 +52,15 @@ def create
@gpo_verify_form = build_gpo_verify_form

result = @gpo_verify_form.submit
analytics.idv_gpo_verification_submitted(**result.to_h)
analytics.idv_verify_by_mail_enter_code_submitted(**result.to_h)
irs_attempts_api_tracker.idv_gpo_verification_submitted(
success: result.success?,
failure_reason: irs_attempts_api_tracker.parse_failure_reason(result),
)

if !result.success?
flash[:error] = @gpo_verify_form.errors.first.message
redirect_to idv_gpo_verify_url
redirect_to idv_verify_by_mail_enter_code_url
return
end

Expand Down Expand Up @@ -90,7 +90,7 @@ def note_if_user_did_not_receive_letter

if current_user && session.delete(:gpo_user_did_not_receive_letter)
# ...and we can pick things up here.
redirect_to idv_gpo_verify_path(did_not_receive_letter: 1)
redirect_to idv_verify_by_mail_enter_code_path(did_not_receive_letter: 1)
end
end

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
module Idv
class ComeBackLaterController < ApplicationController
module Idv::ByMail
class LetterEnqueuedController < ApplicationController
include IdvSession
include StepIndicatorConcern
include Idv::StepIndicatorConcern

before_action :confirm_two_factor_authenticated
before_action :confirm_user_needs_gpo_confirmation

def show
analytics.idv_come_back_later_visit
analytics.idv_letter_enqueued_visit
end

private
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module Idv
class GpoController < ApplicationController
module Idv::ByMail
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I missed this in the original PR but I think we should use the nested namespace style, not the abbreviated style, ex:

module Idv
  module ByMail
    class RequestLetterController < ApplicationController

It's more clear which of the intermediate namespaces is a class vs a module and means the Rails autoloader has to do less guessing (because you can't redefine a class as a module and vice versa)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYSA @matthinz, re: #9136. I'm assuming this isn't a blocker.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah not a blocker

class RequestLetterController < ApplicationController
include IdvSession
include StepIndicatorConcern
include Idv::StepIndicatorConcern
include Idv::AbTestAnalyticsConcern

before_action :confirm_two_factor_authenticated
Expand All @@ -11,11 +11,11 @@ class GpoController < ApplicationController
before_action :confirm_profile_not_too_old

def index
@presenter = GpoPresenter.new(current_user, url_options)
@presenter = RequestLetterPresenter.new(current_user, url_options)
@step_indicator_current_step = step_indicator_current_step
Funnel::DocAuth::RegisterStep.new(current_user.id, current_sp&.issuer).
call(:usps_address, :view, true)
analytics.idv_gpo_address_visited(
analytics.idv_request_letter_visited(
letter_already_sent: @presenter.resend_requested?,
)
end
Expand All @@ -29,7 +29,7 @@ def create
elsif resend_requested?
resend_letter
flash[:success] = t('idv.messages.gpo.another_letter_on_the_way')
redirect_to idv_come_back_later_url
redirect_to idv_letter_enqueued_url
else
redirect_to idv_review_url
end
Expand Down
68 changes: 0 additions & 68 deletions app/controllers/idv/in_person/address_search_controller.rb

This file was deleted.

Loading