Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
214b400
LG-11082 Add Conditional Text To FullAddressSearch Component (#9331)
gina-yamada Oct 10, 2023
21901b6
Integrate personal key feature specs into end_to_end_idv feature spec…
soniaconnolly Oct 10, 2023
fa5209b
Update specs to initialize session as HashWithIndifferentAccess (#9347)
aduth Oct 10, 2023
735b4e5
Change `<b>` tags to `<strong>` for better accessibility and code con…
soniaconnolly Oct 10, 2023
c4eebbf
Enable RSpec/LeakyConstantDeclaration rubocop (#9348)
zachmargolis Oct 10, 2023
f500ff0
Sync TypeScript-ESLint versions (#9352)
aduth Oct 11, 2023
efaa9d7
LG-10037: display warning banner on gpo welcome back page if number o…
amirbey Oct 11, 2023
f9a0cd0
Upgrade to Rails 7.1 (#9333)
Oct 11, 2023
f1462fc
LG-10837: Add New Piv Cac Logging for login visited (#9294)
mdiarra3 Oct 11, 2023
b12f724
Add lint check for reasonable asset bundle sizes (#9353)
aduth Oct 11, 2023
93c56b1
Update changelog script to reflect non-security Dependabot usage (#9354)
aduth Oct 11, 2023
94df2de
Revert "Upgrade to Rails 7.1 (#9333)" (#9356)
Oct 11, 2023
58e1a9c
LG-10812 | Report on all-time user count (#9350)
n1zyy Oct 11, 2023
7d04145
Reorganize combined invoice report for easier manual runs (#9358)
zachmargolis Oct 11, 2023
122c9d9
Exclude 'IRS Attempt API: Event metadata' events from log results (#9…
Oct 11, 2023
5056f39
Remove Guardfile, guard dependencies (#9364)
aduth Oct 12, 2023
1b1ed17
LG-11066 Do not redirect users at the phone step unless they are phon…
jmhooper Oct 12, 2023
fa2e7ef
Fix bug in reporting "months" helper (#9361)
zachmargolis Oct 12, 2023
84701cb
Don't run MonthlyKeyMetricsReport if there are no recipients (#9362)
n1zyy Oct 12, 2023
0f1a167
LG-11221 Personal key doesn't change on page refresh (#9363)
soniaconnolly Oct 12, 2023
a59f87f
✨ Tidy up ✨ MonthlyKeyMetricsReport (#9365)
n1zyy Oct 12, 2023
43b0bd5
Count successful phone proofing attempts towards the rate limit (#9367)
jmhooper Oct 12, 2023
b2705e0
LG-11189 Count successful doc auth proofing towards the rate limit (#…
jmhooper Oct 12, 2023
123cfd9
LG-11190 Don't reset the SSN rate limit on successful submission (#9371)
jmhooper Oct 13, 2023
573fec8
Jmax/lg 11125 update verify your address screen (#9329)
jmax-gsa Oct 13, 2023
4367e7d
Do not always prompt for password when logging in with PIV/CAC during…
Oct 13, 2023
9c85c2f
LG-11037: empty step logged (#9293)
dawei-nava Oct 13, 2023
2094544
Remove trailing references to GPO in IdV (#9378)
jmhooper Oct 13, 2023
aa83fc1
LG-10909 Add an explanation for the OTP rate limiter structure (#9374)
jmhooper Oct 13, 2023
8a26142
LG-11091: phone question links routing (#9315)
amirbey Oct 13, 2023
7d95229
Lg 11183 document upload proofing automate (#9372)
ThatSpaceGuy Oct 13, 2023
e2d2342
LG-11149: Number of Monthly Active Users for monthly reporting (#9381)
olatifflexion Oct 13, 2023
625c2ec
Update build-sass dependencies (#9366)
aduth Oct 16, 2023
257ea6e
changelog: User-Facing Improvements, Authentication, update content i…
mdiarra3 Oct 16, 2023
b488428
Upgrade Node packages to patch critical vulnerability in Babel (#9389)
Oct 16, 2023
1d67947
Update query-cloudwatch to be able to query multiple dates (LG-11257)…
zachmargolis Oct 16, 2023
b4493ab
Add events-summary data-pull dask (LG-11256) (#9382)
zachmargolis Oct 16, 2023
c80e787
LG-10869 Rename the review step to the enter password step (#9375)
jmhooper Oct 16, 2023
ff63204
LG-10849 Use hybrid flow phone number in phone form (#9379)
jmhooper Oct 16, 2023
937c393
LG-10977: trueid response model (#9340)
dawei-nava Oct 16, 2023
b766608
LG-11206: IdV Information Accordion Removal (#9380)
jc-gsa Oct 16, 2023
8258695
Bump libphonenumber-js from 1.10.47 to 1.10.48 (#9391)
dependabot[bot] Oct 16, 2023
9ceb7d8
Remove IdvHelper (feature helper) from idv controller specs (#9384)
soniaconnolly Oct 16, 2023
5f8ee50
Handle errors due to Cloudwatch retention in monthly report (LG-11320…
zachmargolis Oct 16, 2023
9fd86d7
Merge remote-tracking branch 'origin/stages/prod' into stages/rc-2023…
soniaconnolly Oct 17, 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: 0 additions & 1 deletion app/assets/images/get-started/2FA.svg

This file was deleted.

1 change: 0 additions & 1 deletion app/assets/images/get-started/ID.svg

This file was deleted.

1 change: 0 additions & 1 deletion app/assets/images/get-started/email-password.svg

This file was deleted.

1 change: 0 additions & 1 deletion app/assets/images/get-started/financial.svg

This file was deleted.

1 change: 0 additions & 1 deletion app/assets/images/get-started/personal-details.svg

This file was deleted.

1 change: 0 additions & 1 deletion app/assets/images/get-started/personal-key.svg

This file was deleted.

4 changes: 3 additions & 1 deletion app/controllers/concerns/idv/ab_test_analytics_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ module Idv
module AbTestAnalyticsConcern
include AcuantConcern
include Idv::GettingStartedAbTestConcern
include Idv::PhoneQuestionAbTestConcern

def ab_test_analytics_buckets
buckets = {}
Expand All @@ -10,7 +11,8 @@ def ab_test_analytics_buckets
end

buckets.merge(acuant_sdk_ab_test_analytics_args).
merge(getting_started_ab_test_analytics_bucket)
merge(getting_started_ab_test_analytics_bucket).
merge(phone_question_ab_test_analytics_bucket)
end
end
end
30 changes: 30 additions & 0 deletions app/controllers/concerns/idv/phone_question_ab_test_concern.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
module Idv
module PhoneQuestionAbTestConcern
def phone_question_ab_test_bucket
AbTests::IDV_PHONE_QUESTION.bucket(phone_question_user.uuid)
end

def phone_question_user
if defined?(document_capture_user) # hybrid flow
document_capture_user
else
current_user
end
end

def maybe_redirect_for_phone_question_ab_test
return if phone_question_ab_test_bucket != :show_phone_question
return if request.referer == idv_phone_question_url
return if request.referer == idv_link_sent_url

redirect_to idv_phone_question_url
end

def phone_question_ab_test_analytics_bucket
{
phone_question_ab_test_bucket:
phone_question_ab_test_bucket,
}
end
end
end
2 changes: 1 addition & 1 deletion app/controllers/concerns/idv/verify_info_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ def shared_update
idv_session.vendor_phone_confirmation = false
idv_session.user_phone_confirmation = false

# proof_resolution job expects these values
pii[:uuid_prefix] = ServiceProvider.find_by(issuer: sp_session[:issuer])&.app_id
pii[:ssn] = idv_session.ssn
Idv::Agent.new(pii).proof_resolution(
Expand Down Expand Up @@ -238,7 +239,6 @@ def save_threatmetrix_status(form_response)
def summarize_result_and_rate_limit_failures(summary_result)
if summary_result.success?
add_proofing_components
ssn_rate_limiter.reset!
else
idv_failure(summary_result)
end
Expand Down
1 change: 0 additions & 1 deletion app/controllers/frontend_log_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ class FrontendLogController < ApplicationController
'IdV: user clicked what to bring link on ready to verify page' => :idv_in_person_ready_to_verify_what_to_bring_link_clicked,
'IdV: verify in person troubleshooting option clicked' => :idv_verify_in_person_troubleshooting_option_clicked,
'Multi-Factor Authentication: download backup code' => :multi_factor_auth_backup_code_download,
'Sign In: IdV requirements accordion clicked' => :sign_in_idv_requirements_accordion_clicked,
'User prompted before navigation' => :user_prompted_before_navigation,
'User prompted before navigation and still on page' => :user_prompted_before_navigation_and_still_on_page,
}.freeze
Expand Down
2 changes: 2 additions & 0 deletions app/controllers/idv/by_mail/request_letter_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@ class RequestLetterController < ApplicationController
before_action :confirm_profile_not_too_old

def index
@applicant = idv_session.applicant
@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_request_letter_visited(
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/idv/document_capture_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class DocumentCaptureController < ApplicationController
include IdvStepConcern
include StepIndicatorConcern

before_action :confirm_not_rate_limited
before_action :confirm_not_rate_limited, except: [:update]
before_action :confirm_hybrid_handoff_complete
before_action :confirm_document_capture_needed
before_action :override_csp_to_allow_acuant
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module Idv
class ReviewController < ApplicationController
class EnterPasswordController < ApplicationController
before_action :personal_key_confirmed

include IdvStepConcern
Expand All @@ -19,7 +19,7 @@ class ReviewController < ApplicationController
def new
Funnel::DocAuth::RegisterStep.new(current_user.id, current_sp&.issuer).
call(:encrypt, :view, true)
analytics.idv_review_info_visited(
analytics.idv_enter_password_visited(
address_verification_method: address_verification_method,
**ab_test_analytics_buckets,
)
Expand Down Expand Up @@ -51,7 +51,7 @@ def create

redirect_to next_step

analytics.idv_review_complete(
analytics.idv_enter_password_complete(
success: true,
fraud_review_pending: idv_session.profile.fraud_review_pending?,
fraud_rejection: idv_session.profile.fraud_rejection?,
Expand Down Expand Up @@ -84,21 +84,21 @@ def step_indicator_step
private

def title
gpo_user_flow? ? t('titles.idv.review_letter') : t('titles.idv.review')
gpo_user_flow? ? t('titles.idv.enter_password_letter') : t('titles.idv.enter_password')
end

def heading
if gpo_user_flow?
t('idv.titles.session.review_letter', app_name: APP_NAME)
t('idv.titles.session.enter_password_letter', app_name: APP_NAME)
else
t('idv.titles.session.review', app_name: APP_NAME)
t('idv.titles.session.enter_password', app_name: APP_NAME)
end
end

def confirm_current_password
return if valid_password?

analytics.idv_review_complete(
analytics.idv_enter_password_complete(
success: false,
gpo_verification_pending: current_user.gpo_verification_pending_profile?,
# note: this always returns false as of 8/23
Expand Down
2 changes: 2 additions & 0 deletions app/controllers/idv/hybrid_handoff_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ class HybridHandoffController < ApplicationController
include ActionView::Helpers::DateHelper
include IdvStepConcern
include StepIndicatorConcern
include PhoneQuestionAbTestConcern

before_action :confirm_not_rate_limited
before_action :confirm_verify_info_step_needed
before_action :confirm_agreement_step_complete
before_action :confirm_hybrid_handoff_needed, only: :show
before_action :maybe_redirect_for_phone_question_ab_test, only: :show

def show
analytics.idv_doc_auth_hybrid_handoff_visited(**analytics_arguments)
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/idv/otp_verification_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def update
if result.success?
idv_session.user_phone_confirmation = true
save_in_person_notification_phone
flash[:success] = t('idv.messages.review.phone_verified')
flash[:success] = t('idv.messages.enter_password.phone_verified')
redirect_to idv_review_url
else
handle_otp_confirmation_failure
Expand Down
4 changes: 2 additions & 2 deletions app/controllers/idv/personal_key_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ def update
fraud_review_pending: fraud_review_pending?,
fraud_rejection: fraud_rejection?,
)
idv_session.personal_key = nil
redirect_to next_step
end

Expand Down Expand Up @@ -63,8 +64,7 @@ def finish_idv_session
@code = personal_key
@personal_key_generated_at = current_user.personal_key_generated_at

user_session[:personal_key] = @code
idv_session.personal_key = nil
idv_session.personal_key = @code

irs_attempts_api_tracker.idv_personal_key_generated
end
Expand Down
24 changes: 18 additions & 6 deletions app/controllers/idv/phone_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ def set_idv_form
allowed_countries:
PhoneNumberCapabilities::ADDRESS_IDENTITY_PROOFING_SUPPORTED_COUNTRY_CODES,
failed_phone_numbers: idv_session.failed_phone_step_numbers,
hybrid_handoff_phone_number: idv_session.phone_for_mobile_flow,
)
end

Expand All @@ -171,14 +172,15 @@ def async_state_done(async_state)
[:context, :stages, :address],
],
new_phone_added: new_phone_added?,
hybrid_handoff_phone_used: hybrid_handoff_phone_used?,
),
)

if async_state.result[:success]
rate_limiter.reset!
redirect_to_next_step and return
if form_result.success?
redirect_to_next_step
else
handle_proofing_failure
end
handle_proofing_failure
end

def is_req_from_frontend?
Expand All @@ -198,8 +200,18 @@ def new_phone_added?
configured_phones = context.phone_configurations.map(&:phone).map do |number|
PhoneFormatter.format(number)
end
applicant_phone = PhoneFormatter.format(idv_session.applicant['phone'])
!configured_phones.include?(applicant_phone)
!configured_phones.include?(formatted_previous_phone_step_params_phone)
end

def hybrid_handoff_phone_used?
formatted_previous_phone_step_params_phone ==
PhoneFormatter.format(idv_session.phone_for_mobile_flow)
end

def formatted_previous_phone_step_params_phone
PhoneFormatter.format(
idv_session.previous_phone_step_params&.fetch('phone'),
)
end

def gpo_letter_available
Expand Down
Loading