Commit c86e311f authored by Doug Stull's avatar Doug Stull Committed by Mark Chao

Add activate user confirmation modal

- same styling as rest of the admin user actions.
parent fc5df2d4
...@@ -129,7 +129,7 @@ module UsersHelper ...@@ -129,7 +129,7 @@ module UsersHelper
} }
end end
def unblock_user_modal_data(user) def user_unblock_data(user)
{ {
path: unblock_admin_user_path(user), path: unblock_admin_user_path(user),
method: 'put', method: 'put',
...@@ -168,6 +168,19 @@ module UsersHelper ...@@ -168,6 +168,19 @@ module UsersHelper
} }
end end
def user_activation_data(user)
{
path: activate_admin_user_path(user),
method: 'put',
modal_attributes: {
title: s_('AdminUsers|Activate user %{username}?') % { username: sanitize_name(user.name) },
message: s_('AdminUsers|You can always deactivate their account again if needed.'),
okVariant: 'info',
okTitle: s_('AdminUsers|Activate')
}.to_json
}
end
def user_deactivation_effects def user_deactivation_effects
header = tag.p s_('AdminUsers|Deactivating a user has the following effects:') header = tag.p s_('AdminUsers|Deactivating a user has the following effects:')
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
%button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_block_data(user, user_block_effects) } %button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_block_data(user, user_block_effects) }
= s_('AdminUsers|Block') = s_('AdminUsers|Block')
- else - else
%button.btn.btn-default-tertiary.js-confirm-modal-button{ data: unblock_user_modal_data(user) } %button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_unblock_data(user) }
= s_('AdminUsers|Unblock') = s_('AdminUsers|Unblock')
- else - else
%button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_block_data(user, user_block_effects) } %button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_block_data(user, user_block_effects) }
...@@ -51,7 +51,8 @@ ...@@ -51,7 +51,8 @@
= s_('AdminUsers|Deactivate') = s_('AdminUsers|Deactivate')
- elsif user.deactivated? - elsif user.deactivated?
%li %li
= link_to _('Activate'), activate_admin_user_path(user), method: :put %button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_activation_data(user) }
= s_('AdminUsers|Activate')
- if user.access_locked? - if user.access_locked?
%li %li
= link_to _('Unlock'), unlock_admin_user_path(user), method: :put, data: { confirm: _('Are you sure?') } = link_to _('Unlock'), unlock_admin_user_path(user), method: :put, data: { confirm: _('Are you sure?') }
......
...@@ -158,7 +158,8 @@ ...@@ -158,7 +158,8 @@
.card-body .card-body
= render partial: 'admin/users/user_activation_effects' = render partial: 'admin/users/user_activation_effects'
%br %br
= link_to 'Activate user', activate_admin_user_path(@user), method: :put, class: "btn gl-button btn-info", data: { confirm: 'Are you sure?' } %button.btn.gl-button.btn-info.js-confirm-modal-button{ data: user_activation_data(@user) }
= s_('AdminUsers|Activate user')
- elsif @user.can_be_deactivated? - elsif @user.can_be_deactivated?
.card.border-warning .card.border-warning
.card-header.bg-warning.text-white .card-header.bg-warning.text-white
...@@ -182,7 +183,7 @@ ...@@ -182,7 +183,7 @@
%li Log in %li Log in
%li Access Git repositories %li Access Git repositories
%br %br
%button.btn.gl-button.btn-info.js-confirm-modal-button{ data: unblock_user_modal_data(@user) } %button.btn.gl-button.btn-info.js-confirm-modal-button{ data: user_unblock_data(@user) }
= s_('AdminUsers|Unblock user') = s_('AdminUsers|Unblock user')
- elsif !@user.internal? - elsif !@user.internal?
= render 'admin/users/block_user', user: @user = render 'admin/users/block_user', user: @user
......
---
title: Add confirm modal to reactivate user
merge_request: 48173
author:
type: added
...@@ -1489,9 +1489,6 @@ msgstr "" ...@@ -1489,9 +1489,6 @@ msgstr ""
msgid "Actions" msgid "Actions"
msgstr "" msgstr ""
msgid "Activate"
msgstr ""
msgid "Activate Service Desk" msgid "Activate Service Desk"
msgstr "" msgstr ""
...@@ -2070,6 +2067,15 @@ msgstr "" ...@@ -2070,6 +2067,15 @@ msgstr ""
msgid "AdminUsers|Access the API" msgid "AdminUsers|Access the API"
msgstr "" msgstr ""
msgid "AdminUsers|Activate"
msgstr ""
msgid "AdminUsers|Activate user"
msgstr ""
msgid "AdminUsers|Activate user %{username}?"
msgstr ""
msgid "AdminUsers|Active" msgid "AdminUsers|Active"
msgstr "" msgstr ""
...@@ -2259,6 +2265,9 @@ msgstr "" ...@@ -2259,6 +2265,9 @@ msgstr ""
msgid "AdminUsers|You can always block their account again if needed." msgid "AdminUsers|You can always block their account again if needed."
msgstr "" msgstr ""
msgid "AdminUsers|You can always deactivate their account again if needed."
msgstr ""
msgid "AdminUsers|You can always re-activate their account, their data will remain intact." msgid "AdminUsers|You can always re-activate their account, their data will remain intact."
msgstr "" msgstr ""
......
...@@ -77,8 +77,8 @@ RSpec.describe 'Admin::Users::User' do ...@@ -77,8 +77,8 @@ RSpec.describe 'Admin::Users::User' do
end end
end end
context 'when deactivating the user' do context 'when deactivating/re-activating the user' do
it 'shows confirmation and allows blocking', :js do it 'shows confirmation and allows deactivating/re-activating', :js do
visit admin_user_path(user) visit admin_user_path(user)
find('button', text: 'Deactivate user').click find('button', text: 'Deactivate user').click
...@@ -94,6 +94,20 @@ RSpec.describe 'Admin::Users::User' do ...@@ -94,6 +94,20 @@ RSpec.describe 'Admin::Users::User' do
expect(page).to have_content('Successfully deactivated') expect(page).to have_content('Successfully deactivated')
expect(page).to have_content('Reactivate this user') expect(page).to have_content('Reactivate this user')
find('button', text: 'Activate user').click
wait_for_requests
expect(page).to have_content('Activate user')
expect(page).to have_content('You can always deactivate their account again if needed.')
find('.modal-footer button', text: 'Activate').click
wait_for_requests
expect(page).to have_content('Successfully activated')
expect(page).to have_content('Deactivate this user')
end end
end end
......
...@@ -207,11 +207,7 @@ RSpec.describe 'Admin::Users' do ...@@ -207,11 +207,7 @@ RSpec.describe 'Admin::Users' do
it 'shows confirmation and allows blocking and unblocking', :js do it 'shows confirmation and allows blocking and unblocking', :js do
expect(page).to have_content(user.email) expect(page).to have_content(user.email)
find("[data-testid='user-action-button-#{user.id}']").click click_action_in_user_dropdown(user.id, 'Block')
within find("[data-testid='user-action-dropdown-#{user.id}']") do
find('li button', text: 'Block').click
end
wait_for_requests wait_for_requests
...@@ -233,13 +229,7 @@ RSpec.describe 'Admin::Users' do ...@@ -233,13 +229,7 @@ RSpec.describe 'Admin::Users' do
expect(page).to have_content(user.email) expect(page).to have_content(user.email)
find("[data-testid='user-action-button-#{user.id}']").click click_action_in_user_dropdown(user.id, 'Unblock')
within find("[data-testid='user-action-dropdown-#{user.id}']") do
find('li button', text: 'Unblock').click
end
wait_for_requests
expect(page).to have_content('Unblock user') expect(page).to have_content('Unblock user')
expect(page).to have_content('You can always block their account again if needed.') expect(page).to have_content('You can always block their account again if needed.')
...@@ -253,17 +243,11 @@ RSpec.describe 'Admin::Users' do ...@@ -253,17 +243,11 @@ RSpec.describe 'Admin::Users' do
end end
end end
context 'when deactivating a user' do context 'when deactivating/re-activating a user' do
it 'shows confirmation and allows deactivating', :js do it 'shows confirmation and allows deactivating and re-activating', :js do
expect(page).to have_content(user.email) expect(page).to have_content(user.email)
find("[data-testid='user-action-button-#{user.id}']").click click_action_in_user_dropdown(user.id, 'Deactivate')
within find("[data-testid='user-action-dropdown-#{user.id}']") do
find('li button', text: 'Deactivate').click
end
wait_for_requests
expect(page).to have_content('Deactivate user') expect(page).to have_content('Deactivate user')
expect(page).to have_content('Deactivating a user has the following effects') expect(page).to have_content('Deactivating a user has the following effects')
...@@ -276,8 +260,36 @@ RSpec.describe 'Admin::Users' do ...@@ -276,8 +260,36 @@ RSpec.describe 'Admin::Users' do
expect(page).to have_content('Successfully deactivated') expect(page).to have_content('Successfully deactivated')
expect(page).not_to have_content(user.email) expect(page).not_to have_content(user.email)
click_link 'Deactivated'
wait_for_requests
expect(page).to have_content(user.email)
click_action_in_user_dropdown(user.id, 'Activate')
expect(page).to have_content('Activate user')
expect(page).to have_content('You can always deactivate their account again if needed.')
find('.modal-footer button', text: 'Activate').click
wait_for_requests
expect(page).to have_content('Successfully activated')
expect(page).not_to have_content(user.email)
end end
end end
def click_action_in_user_dropdown(user_id, action)
find("[data-testid='user-action-button-#{user_id}']").click
within find("[data-testid='user-action-dropdown-#{user_id}']") do
find('li button', text: action).click
end
wait_for_requests
end
end end
describe 'GET /admin/users/new' do describe 'GET /admin/users/new' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment