Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
c4454196
Commit
c4454196
authored
Aug 17, 2021
by
Peter Hegman
Committed by
Stan Hu
Aug 17, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update copy in recovery settings alert
parent
b347d7a1
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
157 additions
and
47 deletions
+157
-47
app/controllers/profiles/two_factor_auths_controller.rb
app/controllers/profiles/two_factor_auths_controller.rb
+4
-0
app/helpers/user_callouts_helper.rb
app/helpers/user_callouts_helper.rb
+3
-0
app/views/shared/_check_recovery_settings.html.haml
app/views/shared/_check_recovery_settings.html.haml
+4
-3
ee/app/helpers/ee/user_callouts_helper.rb
ee/app/helpers/ee/user_callouts_helper.rb
+8
-1
ee/spec/features/account_recovery_regular_check_spec.rb
ee/spec/features/account_recovery_regular_check_spec.rb
+84
-28
ee/spec/helpers/ee/user_callouts_helper_spec.rb
ee/spec/helpers/ee/user_callouts_helper_spec.rb
+31
-10
locale/gitlab.pot
locale/gitlab.pot
+3
-3
spec/controllers/profiles/two_factor_auths_controller_spec.rb
.../controllers/profiles/two_factor_auths_controller_spec.rb
+12
-0
spec/support/helpers/login_helpers.rb
spec/support/helpers/login_helpers.rb
+8
-2
No files found.
app/controllers/profiles/two_factor_auths_controller.rb
View file @
c4454196
...
@@ -57,6 +57,8 @@ class Profiles::TwoFactorAuthsController < Profiles::ApplicationController
...
@@ -57,6 +57,8 @@ class Profiles::TwoFactorAuthsController < Profiles::ApplicationController
@codes
=
user
.
generate_otp_backup_codes!
@codes
=
user
.
generate_otp_backup_codes!
end
end
helpers
.
dismiss_account_recovery_regular_check
render
'create'
render
'create'
else
else
@error
=
_
(
'Invalid pin code'
)
@error
=
_
(
'Invalid pin code'
)
...
@@ -105,6 +107,8 @@ class Profiles::TwoFactorAuthsController < Profiles::ApplicationController
...
@@ -105,6 +107,8 @@ class Profiles::TwoFactorAuthsController < Profiles::ApplicationController
def
codes
def
codes
Users
::
UpdateService
.
new
(
current_user
,
user:
current_user
).
execute!
do
|
user
|
Users
::
UpdateService
.
new
(
current_user
,
user:
current_user
).
execute!
do
|
user
|
@codes
=
user
.
generate_otp_backup_codes!
@codes
=
user
.
generate_otp_backup_codes!
helpers
.
dismiss_account_recovery_regular_check
end
end
end
end
...
...
app/helpers/user_callouts_helper.rb
View file @
c4454196
...
@@ -53,6 +53,9 @@ module UserCalloutsHelper
...
@@ -53,6 +53,9 @@ module UserCalloutsHelper
!
user_dismissed?
(
REGISTRATION_ENABLED_CALLOUT
)
!
user_dismissed?
(
REGISTRATION_ENABLED_CALLOUT
)
end
end
def
dismiss_account_recovery_regular_check
end
private
private
def
user_dismissed?
(
feature_name
,
ignore_dismissal_earlier_than
=
nil
)
def
user_dismissed?
(
feature_name
,
ignore_dismissal_earlier_than
=
nil
)
...
...
app/views/shared/_check_recovery_settings.html.haml
View file @
c4454196
=
render
'shared/global_alert'
,
=
render
'shared/global_alert'
,
variant: :warning
,
variant: :warning
,
alert_class:
'js-recovery-settings-callout'
,
alert_class:
'js-recovery-settings-callout'
,
alert_data:
{
feature_id:
'account_recovery_regular_check'
,
dismiss_endpoint:
user_callouts_path
,
defer_links:
'true'
}
do
alert_data:
{
feature_id:
'account_recovery_regular_check'
,
dismiss_endpoint:
user_callouts_path
,
defer_links:
'true'
},
close_button_data:
{
testid:
'close-account-recovery-regular-check-callout'
}
do
.gl-alert-body
.gl-alert-body
=
s_
(
'Profiles|
We recommend you ensure two-factor authentication is enabled and the settings are up to dat
e.'
)
=
s_
(
'Profiles|
Ensure you have two-factor authentication recovery codes stored in a safe plac
e.'
)
=
link_to
_
(
'Learn more.'
),
help_page_path
(
'user/profile/account/two_factor_authentication'
),
target:
'_blank'
,
rel:
'noopener noreferrer'
=
link_to
_
(
'Learn more.'
),
help_page_path
(
'user/profile/account/two_factor_authentication'
,
anchor:
'recovery-codes'
),
target:
'_blank'
,
rel:
'noopener noreferrer'
.gl-alert-actions
.gl-alert-actions
=
link_to
profile_two_factor_auth_path
,
class:
'deferred-link btn gl-alert-action btn-confirm btn-md gl-button'
do
=
link_to
profile_two_factor_auth_path
,
class:
'deferred-link btn gl-alert-action btn-confirm btn-md gl-button'
do
=
s_
(
'Profiles|Manage two-factor authentication'
)
=
s_
(
'Profiles|Manage two-factor authentication'
)
ee/app/helpers/ee/user_callouts_helper.rb
View file @
c4454196
...
@@ -58,7 +58,7 @@ module EE
...
@@ -58,7 +58,7 @@ module EE
def
render_account_recovery_regular_check
def
render_account_recovery_regular_check
return
unless
current_user
&&
return
unless
current_user
&&
::
Gitlab
.
com?
&&
::
Gitlab
.
com?
&&
3
.
months
.
ago
>
current_user
.
created_at
&&
current_user
.
two_factor_otp_enabled?
&&
!
user_dismissed?
(
ACCOUNT_RECOVERY_REGULAR_CHECK
,
3
.
months
.
ago
)
!
user_dismissed?
(
ACCOUNT_RECOVERY_REGULAR_CHECK
,
3
.
months
.
ago
)
render
'shared/check_recovery_settings'
render
'shared/check_recovery_settings'
...
@@ -95,6 +95,13 @@ module EE
...
@@ -95,6 +95,13 @@ module EE
(
namespace
.
group?
&&
namespace
.
has_owner?
(
current_user
.
id
))
||
!
namespace
.
group?
(
namespace
.
group?
&&
namespace
.
has_owner?
(
current_user
.
id
))
||
!
namespace
.
group?
end
end
override
:dismiss_account_recovery_regular_check
def
dismiss_account_recovery_regular_check
::
Users
::
DismissUserCalloutService
.
new
(
container:
nil
,
current_user:
current_user
,
params:
{
feature_name:
ACCOUNT_RECOVERY_REGULAR_CHECK
}
).
execute
end
private
private
def
eoa_bronze_plan_end_date
def
eoa_bronze_plan_end_date
...
...
ee/spec/features/account_recovery_regular_check_spec.rb
View file @
c4454196
...
@@ -4,54 +4,110 @@ require 'spec_helper'
...
@@ -4,54 +4,110 @@ require 'spec_helper'
RSpec
.
describe
'Account recovery regular check callout'
do
RSpec
.
describe
'Account recovery regular check callout'
do
context
'when signed in'
do
context
'when signed in'
do
let
(
:user
)
{
create
(
:user
,
created_at:
4
.
months
.
ago
)
}
let
(
:user_two_factor_disabled
)
{
create
(
:user
)
}
let
(
:message
)
{
"We recommend you ensure two-factor authentication is enabled and the settings are up to date."
}
let
(
:user_two_factor_enabled
)
{
create
(
:user
,
:two_factor
)
}
let
(
:message
)
{
'Ensure you have two-factor authentication recovery codes stored in a safe place.'
}
let
(
:action_button
)
{
'Manage two-factor authentication'
}
let
(
:action_button
)
{
'Manage two-factor authentication'
}
before
do
before
do
allow
(
Gitlab
).
to
receive
(
:com?
)
{
true
}
allow
(
Gitlab
).
to
receive
(
:com?
)
{
true
}
sign_in
(
user
)
end
end
it
'shows callout if not dismissed'
do
context
'when user has two-factor authentication disabled'
do
visit
root_dashboard_path
before
do
sign_in
(
user_two_factor_disabled
)
end
expect
(
page
).
to
have_content
(
message
)
it
'does not show the callout'
do
expect
(
page
).
to
have_link
(
action_button
,
href:
profile_two_factor_auth_path
)
visit
root_dashboard_path
end
expect
(
page
).
not_to
have_content
(
message
)
end
context
'when user sets up two-factor authentication'
do
it
'does not show the callout'
,
:js
do
visit
profile_two_factor_auth_path
it
'hides callout when user clicks action button'
,
:js
do
fill_in
'pin_code'
,
with:
user_two_factor_disabled
.
reload
.
current_otp
visit
root_dashboard_path
expect
(
page
).
to
have_content
(
message
)
click_button
'Register with two-factor app'
click_link
action_button
expect
(
page
).
not_to
have_content
(
message
)
wait_for_requests
expect
(
page
).
not_to
have_content
(
message
)
click_button
'Copy codes'
click_link
'Proceed'
expect
(
page
).
not_to
have_content
(
message
)
end
end
end
end
it
'hides callout when user clicks close'
,
:js
do
context
'when user has two-factor authentication enabled'
do
visit
root_dashboard_path
before
do
sign_in
(
user_two_factor_enabled
)
end
expect
(
page
).
to
have_content
(
message
)
it
'shows callout if not dismissed'
do
visit
root_dashboard_path
find
(
'.js-recovery-settings-callout .js-close'
).
click
expect
(
page
).
to
have_content
(
message
)
wait_for_requests
expect
(
page
).
to
have_link
(
action_button
,
href:
profile_two_factor_auth_path
)
end
expect
(
page
).
not_to
have_content
(
message
)
it
'hides callout when user clicks action button'
,
:js
do
end
visit
root_dashboard_path
expect
(
page
).
to
have_content
(
message
)
click_link
action_button
wait_for_requests
expect
(
page
).
not_to
have_content
(
message
)
end
it
'hides callout when user clicks close'
,
:js
do
visit
root_dashboard_path
expect
(
page
).
to
have_content
(
message
)
close_callout
it
'shows callout on next session if user did not dismissed it'
do
expect
(
page
).
not_to
have_content
(
message
)
visit
root_dashboard_path
end
expect
(
page
).
to
have_content
(
message
)
it
'shows callout on next session if user did not dismissed it'
do
visit
root_dashboard_path
gitlab_sign_out
expect
(
page
).
to
have_content
(
message
)
gitlab_sign_in
(
user
)
visit
root_dashboard_path
expect
(
page
).
to
have_content
(
message
)
start_new_session
(
user_two_factor_enabled
)
visit
root_dashboard_path
expect
(
page
).
to
have_content
(
message
)
end
it
'hides callout on next session if user dismissed it'
,
:js
do
visit
root_dashboard_path
expect
(
page
).
to
have_content
(
message
)
close_callout
start_new_session
(
user_two_factor_enabled
)
visit
root_dashboard_path
expect
(
page
).
not_to
have_content
(
message
)
end
end
end
end
end
def
close_callout
find
(
'[data-testid="close-account-recovery-regular-check-callout"]'
).
click
wait_for_requests
end
def
start_new_session
(
user
)
gitlab_sign_out
gitlab_sign_in
(
user
,
two_factor_auth:
true
)
end
end
end
ee/spec/helpers/ee/user_callouts_helper_spec.rb
View file @
c4454196
...
@@ -181,19 +181,19 @@ RSpec.describe EE::UserCalloutsHelper do
...
@@ -181,19 +181,19 @@ RSpec.describe EE::UserCalloutsHelper do
end
end
describe
'#render_account_recovery_regular_check'
do
describe
'#render_account_recovery_regular_check'
do
let
(
:
new_user
)
{
create
(
:user
)
}
let
(
:
user_two_factor_disabled
)
{
create
(
:user
)
}
let
(
:
old_user
)
{
create
(
:user
,
created_at:
4
.
months
.
ago
)
}
let
(
:
user_two_factor_enabled
)
{
create
(
:user
,
:two_factor
)
}
let
(
:anonymous
)
{
nil
}
let
(
:anonymous
)
{
nil
}
where
(
:kind_of_user
,
:is_gitlab_com?
,
:dismissed_callout?
,
:should_render?
)
do
where
(
:kind_of_user
,
:is_gitlab_com?
,
:dismissed_callout?
,
:should_render?
)
do
:anonymous
|
false
|
false
|
false
:anonymous
|
false
|
false
|
false
:anonymous
|
true
|
false
|
false
:anonymous
|
true
|
false
|
false
:
new_user
|
false
|
false
|
false
:
user_two_factor_disabled
|
false
|
false
|
false
:
new_user
|
true
|
false
|
false
:
user_two_factor_disabled
|
true
|
false
|
false
:
old_user
|
false
|
false
|
false
:
user_two_factor_disabled
|
true
|
true
|
false
:
old_user
|
true
|
false
|
tru
e
:
user_two_factor_enabled
|
false
|
false
|
fals
e
:
old_user
|
false
|
true
|
fals
e
:
user_two_factor_enabled
|
true
|
false
|
tru
e
:
old_user
|
true
|
true
|
false
:
user_two_factor_enabled
|
true
|
true
|
false
end
end
with_them
do
with_them
do
...
@@ -391,4 +391,25 @@ RSpec.describe EE::UserCalloutsHelper do
...
@@ -391,4 +391,25 @@ RSpec.describe EE::UserCalloutsHelper do
expect
(
helper
.
send
(
:eoa_bronze_plan_end_date
).
is_a?
(
Date
)).
to
eq
(
true
)
expect
(
helper
.
send
(
:eoa_bronze_plan_end_date
).
is_a?
(
Date
)).
to
eq
(
true
)
end
end
end
end
describe
'#dismiss_account_recovery_regular_check'
do
let_it_be
(
:user
)
{
create
(
:user
)
}
before
do
allow
(
helper
).
to
receive
(
:current_user
).
and_return
(
user
)
end
it
'dismisses `ACCOUNT_RECOVERY_REGULAR_CHECK` callout'
do
expect
(
::
Users
::
DismissUserCalloutService
)
.
to
receive
(
:new
)
.
with
(
container:
nil
,
current_user:
user
,
params:
{
feature_name:
UserCalloutsHelper
::
ACCOUNT_RECOVERY_REGULAR_CHECK
}
)
.
and_call_original
helper
.
dismiss_account_recovery_regular_check
end
end
end
end
locale/gitlab.pot
View file @
c4454196
...
@@ -25527,6 +25527,9 @@ msgstr ""
...
@@ -25527,6 +25527,9 @@ msgstr ""
msgid "Profiles|Edit Profile"
msgid "Profiles|Edit Profile"
msgstr ""
msgstr ""
msgid "Profiles|Ensure you have two-factor authentication recovery codes stored in a safe place."
msgstr ""
msgid "Profiles|Enter how your name is pronounced to help people address you correctly"
msgid "Profiles|Enter how your name is pronounced to help people address you correctly"
msgstr ""
msgstr ""
...
@@ -25719,9 +25722,6 @@ msgstr ""
...
@@ -25719,9 +25722,6 @@ msgstr ""
msgid "Profiles|Using emojis in names seems fun, but please try to set a status message instead"
msgid "Profiles|Using emojis in names seems fun, but please try to set a status message instead"
msgstr ""
msgstr ""
msgid "Profiles|We recommend you ensure two-factor authentication is enabled and the settings are up to date."
msgstr ""
msgid "Profiles|What's your status?"
msgid "Profiles|What's your status?"
msgstr ""
msgstr ""
...
...
spec/controllers/profiles/two_factor_auths_controller_spec.rb
View file @
c4454196
...
@@ -70,6 +70,12 @@ RSpec.describe Profiles::TwoFactorAuthsController do
...
@@ -70,6 +70,12 @@ RSpec.describe Profiles::TwoFactorAuthsController do
go
go
end
end
it
'dismisses the `ACCOUNT_RECOVERY_REGULAR_CHECK` callout'
do
expect
(
controller
.
helpers
).
to
receive
(
:dismiss_account_recovery_regular_check
)
go
end
it
'renders create'
do
it
'renders create'
do
go
go
expect
(
response
).
to
render_template
(
:create
)
expect
(
response
).
to
render_template
(
:create
)
...
@@ -117,6 +123,12 @@ RSpec.describe Profiles::TwoFactorAuthsController do
...
@@ -117,6 +123,12 @@ RSpec.describe Profiles::TwoFactorAuthsController do
user
.
reload
user
.
reload
expect
(
user
.
otp_backup_codes
).
not_to
be_empty
expect
(
user
.
otp_backup_codes
).
not_to
be_empty
end
end
it
'dismisses the `ACCOUNT_RECOVERY_REGULAR_CHECK` callout'
do
expect
(
controller
.
helpers
).
to
receive
(
:dismiss_account_recovery_regular_check
)
post
:codes
end
end
end
describe
'DELETE destroy'
do
describe
'DELETE destroy'
do
...
...
spec/support/helpers/login_helpers.rb
View file @
c4454196
...
@@ -88,9 +88,10 @@ module LoginHelpers
...
@@ -88,9 +88,10 @@ module LoginHelpers
# Private: Login as the specified user
# Private: Login as the specified user
#
#
# user
- User instance to login with
# user - User instance to login with
# remember - Whether or not to check "Remember me" (default: false)
# remember - Whether or not to check "Remember me" (default: false)
def
gitlab_sign_in_with
(
user
,
remember:
false
)
# two_factor_auth - If two-factor authentication is enabled (default: false)
def
gitlab_sign_in_with
(
user
,
remember:
false
,
two_factor_auth:
false
)
visit
new_user_session_path
visit
new_user_session_path
fill_in
"user_login"
,
with:
user
.
email
fill_in
"user_login"
,
with:
user
.
email
...
@@ -98,6 +99,11 @@ module LoginHelpers
...
@@ -98,6 +99,11 @@ module LoginHelpers
check
'user_remember_me'
if
remember
check
'user_remember_me'
if
remember
click_button
"Sign in"
click_button
"Sign in"
if
two_factor_auth
fill_in
"user_otp_attempt"
,
with:
user
.
reload
.
current_otp
click_button
"Verify code"
end
end
end
def
login_via
(
provider
,
user
,
uid
,
remember_me:
false
,
additional_info:
{})
def
login_via
(
provider
,
user
,
uid
,
remember_me:
false
,
additional_info:
{})
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment