diff --git a/app/controllers/users/backup_code_setup_controller.rb b/app/controllers/users/backup_code_setup_controller.rb index 542ef58c0d2..17e1f359bae 100644 --- a/app/controllers/users/backup_code_setup_controller.rb +++ b/app/controllers/users/backup_code_setup_controller.rb @@ -30,7 +30,9 @@ def create track_backup_codes_created end - def edit; end + def edit + analytics.backup_code_regenerate_visit(**analytics_properties) + end def continue flash[:success] = t('notices.backup_codes_configured') @@ -123,6 +125,7 @@ def analytics_properties multi_factor_auth_method: 'backup_codes', in_multi_mfa_selection_flow: in_multi_mfa_selection_flow?, enabled_mfa_methods_count: mfa_context.enabled_mfa_methods_count, + referer: ParseControllerFromReferer.new(request.referer).call, } end end diff --git a/app/controllers/users/emails_controller.rb b/app/controllers/users/emails_controller.rb index bb944540f01..d6b70f0394b 100644 --- a/app/controllers/users/emails_controller.rb +++ b/app/controllers/users/emails_controller.rb @@ -9,6 +9,7 @@ class EmailsController < ApplicationController before_action :confirm_recently_authenticated_2fa def show + analytics.add_email_visit @add_user_email_form = AddUserEmailForm.new end diff --git a/app/controllers/users/passwords_controller.rb b/app/controllers/users/passwords_controller.rb index db135964483..611c42f8b39 100644 --- a/app/controllers/users/passwords_controller.rb +++ b/app/controllers/users/passwords_controller.rb @@ -7,6 +7,7 @@ class PasswordsController < ApplicationController before_action :confirm_recently_authenticated_2fa def edit + analytics.edit_password_visit @update_user_password_form = UpdateUserPasswordForm.new(current_user) @forbidden_passwords = current_user.email_addresses.flat_map do |email_address| ForbiddenPasswords.new(email_address.email).call diff --git a/app/services/analytics_events.rb b/app/services/analytics_events.rb index 2beb347dffc..71f122ad733 100644 --- a/app/services/analytics_events.rb +++ b/app/services/analytics_events.rb @@ -176,6 +176,11 @@ def add_email_request(success:, errors:, **extra) ) end + # When a user views the add email address page + def add_email_visit + track_event('Add Email Address Page Visited') + end + # Tracks When users visit the add phone page def add_phone_setup_visit track_event( @@ -220,6 +225,12 @@ def backup_code_created(enabled_mfa_methods_count:, **extra) ) end + # Tracks when the user visits the Backup Code Regenerate page. + # @param [String] request_came_from the controller/action the request came from + def backup_code_regenerate_visit(referer:, **extra) + track_event('Backup Code Regenerate Visited', referer:, **extra) + end + # Track user creating new BackupCodeSetupForm, record form submission Hash # @param [Boolean] success # @param [Hash] errors @@ -293,6 +304,11 @@ def doc_auth_warning(message: nil, **extra) track_event('Doc Auth Warning', message: message, **extra) end + # When a user views the edit password page + def edit_password_visit + track_event('Edit Password Page Visited') + end + # @param [Boolean] success # @param [String] user_id # @param [Boolean] user_locked_out if the user is currently locked out of their second factor diff --git a/spec/controllers/users/backup_code_setup_controller_spec.rb b/spec/controllers/users/backup_code_setup_controller_spec.rb index a338eb9741c..bcf4c73d30b 100644 --- a/spec/controllers/users/backup_code_setup_controller_spec.rb +++ b/spec/controllers/users/backup_code_setup_controller_spec.rb @@ -140,4 +140,19 @@ expect(response).to redirect_to(backup_code_setup_url) end end + + context 'user visits the Backup codes regenerate page' do + let(:user) { create(:user) } + before do + stub_sign_in(user) + stub_analytics + end + it 'renders the index view' do + get :edit + expect(@analytics).to have_logged_event( + 'Backup Code Regenerate Visited', + hash_including(referer: { request_came_from: 'no referer' }), + ) + end + end end diff --git a/spec/controllers/users/emails_controller_spec.rb b/spec/controllers/users/emails_controller_spec.rb index 77039940105..75159965097 100644 --- a/spec/controllers/users/emails_controller_spec.rb +++ b/spec/controllers/users/emails_controller_spec.rb @@ -10,6 +10,18 @@ end end + context 'user visits add an email address page' do + let(:user) { create(:user) } + before do + stub_sign_in(user) + stub_analytics + end + it 'renders the index view' do + get :show + expect(@analytics).to have_logged_event('Add Email Address Page Visited') + end + end + describe '#limit' do context 'user exceeds email limit' do let(:user) { create(:user) } diff --git a/spec/controllers/users/passwords_controller_spec.rb b/spec/controllers/users/passwords_controller_spec.rb index f4143aaf2f3..5d459899773 100644 --- a/spec/controllers/users/passwords_controller_spec.rb +++ b/spec/controllers/users/passwords_controller_spec.rb @@ -1,6 +1,18 @@ require 'rails_helper' RSpec.describe Users::PasswordsController do + context 'user visits add an email address page' do + let(:user) { create(:user) } + before do + stub_sign_in(user) + stub_analytics + end + it 'renders the index view' do + get :edit + expect(@analytics).to have_logged_event('Edit Password Page Visited') + end + end + describe '#update' do context 'form returns success' do it 'redirects to profile and sends a password change email' do