Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
f86b678
LG-10660: Consolidate MFA setup controllers (#9036)
aduth Aug 22, 2023
6c153cc
Remove 'native' attribute references from service_provider_updater (#…
Sgtpluck Aug 22, 2023
69cf081
Disable the GPO reminder job (#9051)
jmhooper Aug 22, 2023
e50d7e2
LG-10594: remove no longer needed extend timeout from link sent (#9037)
amirbey Aug 22, 2023
ecf0ab5
Send in-person proofing notification SMS in user's selected email lan…
Aug 22, 2023
7143b62
Remove old fraud review profile state backfill rake tasks (#9056)
jmhooper Aug 22, 2023
4a1a6ec
changelog: Internal, add test, add test to check for sorted front end…
jmdembe Aug 22, 2023
5764863
LG-10628: Enable Dependabot updates for phone dependencies (#9055)
aduth Aug 22, 2023
9a812a5
Bump phonelib from 0.8.2 to 0.8.3 (#9061)
dependabot[bot] Aug 23, 2023
d562191
Bump libphonenumber-js from 1.10.39 to 1.10.41 (#9060)
dependabot[bot] Aug 23, 2023
862d2ab
LG-9821: Consolidate Phone setup Controller PT 1 (#8966)
mdiarra3 Aug 23, 2023
d7e1fae
Update Rails to patch vulnerability (#9067)
Aug 23, 2023
fdc81be
LG-10344 Opportunistically read multi-region KMS ciphertexts (#9047)
jmhooper Aug 23, 2023
4df28c0
Mark new welcome template links with step: 'welcome_new' (#9063)
soniaconnolly Aug 23, 2023
8a30cf8
LG-10701 Add skip_hybrid_handoff to analytics (#9034)
soniaconnolly Aug 23, 2023
7fea89d
Refactor the InPersonEnrollment model and its tests (#9062)
Aug 23, 2023
507fa1d
Inform user that a service provider request is requiring re-authentic…
Aug 23, 2023
0879eee
Update email deliveries script to include email action (#9070)
Aug 23, 2023
b55d07d
Add a message when destroying Service Providers with associated In Pe…
Jeremy1026 Aug 23, 2023
8c9f9b0
LG-10344 Add a rake task for detecting mismatch multi-region and sing…
jmhooper Aug 23, 2023
c0f3023
changelog: Internal, In-Person Proofing, Make PO button rendering opt…
allthesignals Aug 23, 2023
122a92c
LG-10576 delete threatmetrix session id from flow session (#9049)
soniaconnolly Aug 23, 2023
54284ee
Tweak the IdentityVerificationReport (#9072)
jmhooper Aug 23, 2023
1c5c282
LG-10658: Add analytics_id to logged Verify Info proofing result (#9064)
NavaTim Aug 23, 2023
33a2e55
LG-10658: Remove now-redundant merge of A/B testing fields into proof…
NavaTim Aug 23, 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
13 changes: 10 additions & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
version: 2
updates:
- package-ecosystem: 'npm'
directory: '/'
- package-ecosystem: npm
directory: /
schedule:
interval: 'daily'
interval: daily
allow:
- dependency-name: '@18f/identity-design-system'
- dependency-name: libphonenumber-js
- package-ecosystem: bundler
directory: /
schedule:
interval: daily
allow:
- dependency-name: phonelib
108 changes: 54 additions & 54 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -60,70 +60,70 @@ GIT
GEM
remote: https://rubygems.org/
specs:
actioncable (7.0.7)
actionpack (= 7.0.7)
activesupport (= 7.0.7)
actioncable (7.0.7.2)
actionpack (= 7.0.7.2)
activesupport (= 7.0.7.2)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (7.0.7)
actionpack (= 7.0.7)
activejob (= 7.0.7)
activerecord (= 7.0.7)
activestorage (= 7.0.7)
activesupport (= 7.0.7)
actionmailbox (7.0.7.2)
actionpack (= 7.0.7.2)
activejob (= 7.0.7.2)
activerecord (= 7.0.7.2)
activestorage (= 7.0.7.2)
activesupport (= 7.0.7.2)
mail (>= 2.7.1)
net-imap
net-pop
net-smtp
actionmailer (7.0.7)
actionpack (= 7.0.7)
actionview (= 7.0.7)
activejob (= 7.0.7)
activesupport (= 7.0.7)
actionmailer (7.0.7.2)
actionpack (= 7.0.7.2)
actionview (= 7.0.7.2)
activejob (= 7.0.7.2)
activesupport (= 7.0.7.2)
mail (~> 2.5, >= 2.5.4)
net-imap
net-pop
net-smtp
rails-dom-testing (~> 2.0)
actionpack (7.0.7)
actionview (= 7.0.7)
activesupport (= 7.0.7)
actionpack (7.0.7.2)
actionview (= 7.0.7.2)
activesupport (= 7.0.7.2)
rack (~> 2.0, >= 2.2.4)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (7.0.7)
actionpack (= 7.0.7)
activerecord (= 7.0.7)
activestorage (= 7.0.7)
activesupport (= 7.0.7)
actiontext (7.0.7.2)
actionpack (= 7.0.7.2)
activerecord (= 7.0.7.2)
activestorage (= 7.0.7.2)
activesupport (= 7.0.7.2)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
actionview (7.0.7)
activesupport (= 7.0.7)
actionview (7.0.7.2)
activesupport (= 7.0.7.2)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
activejob (7.0.7)
activesupport (= 7.0.7)
activejob (7.0.7.2)
activesupport (= 7.0.7.2)
globalid (>= 0.3.6)
activemodel (7.0.7)
activesupport (= 7.0.7)
activerecord (7.0.7)
activemodel (= 7.0.7)
activesupport (= 7.0.7)
activemodel (7.0.7.2)
activesupport (= 7.0.7.2)
activerecord (7.0.7.2)
activemodel (= 7.0.7.2)
activesupport (= 7.0.7.2)
activerecord-postgis-adapter (8.0.2)
activerecord (~> 7.0.0)
rgeo-activerecord (~> 7.0.0)
activestorage (7.0.7)
actionpack (= 7.0.7)
activejob (= 7.0.7)
activerecord (= 7.0.7)
activesupport (= 7.0.7)
activestorage (7.0.7.2)
actionpack (= 7.0.7.2)
activejob (= 7.0.7.2)
activerecord (= 7.0.7.2)
activesupport (= 7.0.7.2)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
activesupport (7.0.7)
activesupport (7.0.7.2)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
Expand Down Expand Up @@ -443,7 +443,7 @@ GEM
pg (1.5.3)
pg_query (4.2.3)
google-protobuf (>= 3.22.3)
phonelib (0.8.2)
phonelib (0.8.3)
pkcs11 (0.3.4)
premailer (1.21.0)
addressable
Expand Down Expand Up @@ -492,20 +492,20 @@ GEM
rack_session_access (0.2.0)
builder (>= 2.0.0)
rack (>= 1.0.0)
rails (7.0.7)
actioncable (= 7.0.7)
actionmailbox (= 7.0.7)
actionmailer (= 7.0.7)
actionpack (= 7.0.7)
actiontext (= 7.0.7)
actionview (= 7.0.7)
activejob (= 7.0.7)
activemodel (= 7.0.7)
activerecord (= 7.0.7)
activestorage (= 7.0.7)
activesupport (= 7.0.7)
rails (7.0.7.2)
actioncable (= 7.0.7.2)
actionmailbox (= 7.0.7.2)
actionmailer (= 7.0.7.2)
actionpack (= 7.0.7.2)
actiontext (= 7.0.7.2)
actionview (= 7.0.7.2)
activejob (= 7.0.7.2)
activemodel (= 7.0.7.2)
activerecord (= 7.0.7.2)
activestorage (= 7.0.7.2)
activesupport (= 7.0.7.2)
bundler (>= 1.15.0)
railties (= 7.0.7)
railties (= 7.0.7.2)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
Expand All @@ -520,9 +520,9 @@ GEM
rails-i18n (7.0.6)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8)
railties (7.0.7)
actionpack (= 7.0.7)
activesupport (= 7.0.7)
railties (7.0.7.2)
actionpack (= 7.0.7.2)
activesupport (= 7.0.7.2)
method_source
rake (>= 12.2)
thor (~> 1.0)
Expand Down
2 changes: 1 addition & 1 deletion app/components/page_footer_component.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ def call
end

def css_class
['margin-top-4 padding-top-2 border-top border-primary-light', *tag_options[:class]]
['page-footer margin-top-4 padding-top-2 border-top border-primary-light', *tag_options[:class]]
end
end
19 changes: 19 additions & 0 deletions app/controllers/concerns/forced_reauthentication_concern.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# This module defines an interface for storing when an issuer has forced re-authentication
# for an active session. A request to force re-authentication that does not result
# in the user needing to re-authenticate due to not being authenticated should be excluded.

module ForcedReauthenticationConcern
def issuer_forced_reauthentication?(issuer:)
session.dig(:forced_reauthentication_sps, issuer) == true
end

def set_issuer_forced_reauthentication(issuer:, is_forced_reauthentication:)
if is_forced_reauthentication
session[:forced_reauthentication_sps] ||= {}
session[:forced_reauthentication_sps][issuer] = true
elsif session[:forced_reauthentication_sps]
session[:forced_reauthentication_sps].delete(issuer)
session.delete(:forced_reauthentication_sps) if session[:forced_reauthentication_sps].blank?
end
end
end
7 changes: 6 additions & 1 deletion app/controllers/concerns/idv/ab_test_analytics_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@ module AbTestAnalyticsConcern
include Idv::GettingStartedAbTestConcern

def ab_test_analytics_buckets
acuant_sdk_ab_test_analytics_args.
buckets = {}
if defined?(idv_session)
buckets[:skip_hybrid_handoff] = idv_session&.skip_hybrid_handoff
end

buckets.merge(acuant_sdk_ab_test_analytics_args).
merge(getting_started_ab_test_analytics_bucket)
end
end
Expand Down
8 changes: 4 additions & 4 deletions app/controllers/concerns/idv/verify_info_concern.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ def shared_update
should_proof_state_id: should_use_aamva?(pii),
trace_id: amzn_trace_id,
user_id: current_user.id,
threatmetrix_session_id:
idv_session.threatmetrix_session_id || flow_session[:threatmetrix_session_id],
threatmetrix_session_id: idv_session.threatmetrix_session_id,
request_ip: request.remote_ip,
double_address_verification: capture_secondary_id_enabled,
)
Expand Down Expand Up @@ -195,8 +194,9 @@ def async_state_done(current_async_state)
address_edited: !!(idv_session.address_edited || flow_session['address_edited']),
address_line2_present: !pii[:address2].blank?,
pii_like_keypaths: [[:errors, :ssn], [:response_body, :first_name],
[:same_address_as_id],
[:state_id, :state_id_jurisdiction]],
}.merge(ab_test_analytics_buckets),
},
)
log_idv_verification_submitted_event(
success: form_response.success?,
Expand All @@ -219,7 +219,7 @@ def async_state_done(current_async_state)
idv_session.invalidate_verify_info_step!
end

analytics.idv_doc_auth_verify_proofing_results(**form_response.to_h)
analytics.idv_doc_auth_verify_proofing_results(**analytics_arguments, **form_response.to_h)
end

def next_step_url
Expand Down
16 changes: 15 additions & 1 deletion app/controllers/concerns/saml_idp_auth_concern.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
module SamlIdpAuthConcern
extend ActiveSupport::Concern
extend Forwardable
include ForcedReauthenticationConcern

included do
# rubocop:disable Rails/LexicallyScopedActionFilter
Expand All @@ -19,9 +20,22 @@ module SamlIdpAuthConcern
private

def sign_out_if_forceauthn_is_true_and_user_is_signed_in
if !saml_request.force_authn?
set_issuer_forced_reauthentication(
issuer: saml_request_service_provider.issuer,
is_forced_reauthentication: false,
)
end

return unless user_signed_in? && saml_request.force_authn?

sign_out unless sp_session[:final_auth_request]
if !sp_session[:final_auth_request]
sign_out
set_issuer_forced_reauthentication(
issuer: saml_request_service_provider.issuer,
is_forced_reauthentication: true,
)
end
sp_session[:final_auth_request] = false
end

Expand Down
2 changes: 1 addition & 1 deletion app/controllers/frontend_log_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ class FrontendLogController < ApplicationController
'Multi-Factor Authentication: download backup code' => :multi_factor_auth_backup_code_download,
'Show Password button clicked' => :show_password_button_clicked,
'Sign In: IdV requirements accordion clicked' => :sign_in_idv_requirements_accordion_clicked,
'User prompted before navigation and still on page' => :user_prompted_before_navigation_and_still_on_page,
'User prompted before navigation' => :user_prompted_before_navigation,
'User prompted before navigation and still on page' => :user_prompted_before_navigation_and_still_on_page,
}.transform_values { |method| AnalyticsEvents.instance_method(method) }.freeze
# rubocop:enable Layout/LineLength

Expand Down
1 change: 1 addition & 0 deletions app/controllers/idv/agreement_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ def analytics_arguments
{
step: 'agreement',
analytics_id: 'Doc Auth',
skip_hybrid_handoff: idv_session.skip_hybrid_handoff,
irs_reproofing: irs_reproofing?,
}.merge(ab_test_analytics_buckets)
end
Expand Down
3 changes: 2 additions & 1 deletion app/controllers/idv/document_capture_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ def analytics_arguments
analytics_id: 'Doc Auth',
irs_reproofing: irs_reproofing?,
redo_document_capture: idv_session.redo_document_capture,
}.compact.merge(ab_test_analytics_buckets)
skip_hybrid_handoff: idv_session.skip_hybrid_handoff,
}.merge(ab_test_analytics_buckets)
end

def handle_stored_result
Expand Down
1 change: 1 addition & 0 deletions app/controllers/idv/getting_started_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ def analytics_arguments
{
step: 'getting_started',
analytics_id: 'Doc Auth',
skip_hybrid_handoff: idv_session.skip_hybrid_handoff,
irs_reproofing: irs_reproofing?,
}.merge(ab_test_analytics_buckets)
end
Expand Down
3 changes: 2 additions & 1 deletion app/controllers/idv/hybrid_handoff_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,8 @@ def analytics_arguments
analytics_id: 'Doc Auth',
irs_reproofing: irs_reproofing?,
redo_document_capture: params[:redo] ? true : nil,
}.compact.merge(ab_test_analytics_buckets)
skip_hybrid_handoff: idv_session.skip_hybrid_handoff,
}.merge(ab_test_analytics_buckets)
end

def form_response(destination:)
Expand Down
14 changes: 0 additions & 14 deletions app/controllers/idv/link_sent_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ class LinkSentController < ApplicationController

before_action :confirm_hybrid_handoff_complete
before_action :confirm_document_capture_needed
before_action :extend_timeout_using_meta_refresh

def show
analytics.idv_doc_auth_link_sent_visited(**analytics_arguments)
Expand Down Expand Up @@ -91,18 +90,5 @@ def document_capture_session_result
document_capture_session&.load_doc_auth_async_result
end
end

def extend_timeout_using_meta_refresh
max_10min_refreshes = IdentityConfig.store.doc_auth_extend_timeout_by_minutes / 10
return if max_10min_refreshes <= 0
meta_refresh_count = flow_session[:meta_refresh_count].to_i
return if meta_refresh_count >= max_10min_refreshes
do_meta_refresh(meta_refresh_count)
end

def do_meta_refresh(meta_refresh_count)
@meta_refresh = 10 * 60
flow_session[:meta_refresh_count] = meta_refresh_count + 1
end
end
end
11 changes: 11 additions & 0 deletions app/controllers/openid_connect/authorization_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ class AuthorizationController < ApplicationController
include SecureHeadersConcern
include AuthorizationCountConcern
include BillableEventTrackable
include ForcedReauthenticationConcern

before_action :build_authorize_form_from_params, only: [:index]
before_action :pre_validate_authorize_form, only: [:index]
Expand Down Expand Up @@ -125,12 +126,22 @@ def pre_validate_authorize_form
end

def sign_out_if_prompt_param_is_login_and_user_is_signed_in
if @authorize_form.prompt != 'login'
set_issuer_forced_reauthentication(
issuer: @authorize_form.service_provider.issuer,
is_forced_reauthentication: false,
)
end
return unless user_signed_in? && @authorize_form.prompt == 'login'
return if session[:oidc_state_for_login_prompt] == @authorize_form.state
return if check_sp_handoff_bounced
unless sp_session[:request_url] == request.original_url
sign_out
session[:oidc_state_for_login_prompt] = @authorize_form.state
set_issuer_forced_reauthentication(
issuer: @authorize_form.service_provider.issuer,
is_forced_reauthentication: true,
)
end
end

Expand Down
Loading