Skip to content
5 changes: 4 additions & 1 deletion app/controllers/users/backup_code_setup_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions app/controllers/users/emails_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
1 change: 1 addition & 0 deletions app/controllers/users/passwords_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
16 changes: 16 additions & 0 deletions app/services/analytics_events.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
15 changes: 15 additions & 0 deletions spec/controllers/users/backup_code_setup_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
12 changes: 12 additions & 0 deletions spec/controllers/users/emails_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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) }
Expand Down
12 changes: 12 additions & 0 deletions spec/controllers/users/passwords_controller_spec.rb
Original file line number Diff line number Diff line change
@@ -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
Expand Down