Commit d61dc91e authored by peterhegman's avatar peterhegman

Indicate locked users in Admin Area users list

Users are locked if they have 10 failed sign in attempts. This commit
adds a `Locked` badge next to locked users in the Admin Area users
list.

Changelog: added
parent 0e9ab359
...@@ -101,6 +101,7 @@ module UsersHelper ...@@ -101,6 +101,7 @@ module UsersHelper
badges << { text: s_('AdminUsers|Admin'), variant: 'success' } if user.admin? badges << { text: s_('AdminUsers|Admin'), variant: 'success' } if user.admin?
badges << { text: s_('AdminUsers|External'), variant: 'secondary' } if user.external? badges << { text: s_('AdminUsers|External'), variant: 'secondary' } if user.external?
badges << { text: s_("AdminUsers|It's you!"), variant: 'muted' } if current_user == user badges << { text: s_("AdminUsers|It's you!"), variant: 'muted' } if current_user == user
badges << { text: s_("AdminUsers|Locked"), variant: 'warning' } if user.access_locked?
end end
end end
......
...@@ -2819,6 +2819,9 @@ msgstr "" ...@@ -2819,6 +2819,9 @@ msgstr ""
msgid "AdminUsers|Learn more about %{link_start}banned users.%{link_end}" msgid "AdminUsers|Learn more about %{link_start}banned users.%{link_end}"
msgstr "" msgstr ""
msgid "AdminUsers|Locked"
msgstr ""
msgid "AdminUsers|Log in" msgid "AdminUsers|Log in"
msgstr "" msgstr ""
......
...@@ -4,6 +4,7 @@ require 'spec_helper' ...@@ -4,6 +4,7 @@ require 'spec_helper'
RSpec.describe 'Admin::Users' do RSpec.describe 'Admin::Users' do
include Spec::Support::Helpers::Features::AdminUsersHelpers include Spec::Support::Helpers::Features::AdminUsersHelpers
include Spec::Support::Helpers::ModalHelpers
let_it_be(:user, reload: true) { create(:omniauth_user, provider: 'twitter', extern_uid: '123456') } let_it_be(:user, reload: true) { create(:omniauth_user, provider: 'twitter', extern_uid: '123456') }
let_it_be(:current_user) { create(:admin) } let_it_be(:current_user) { create(:admin) }
...@@ -294,6 +295,22 @@ RSpec.describe 'Admin::Users' do ...@@ -294,6 +295,22 @@ RSpec.describe 'Admin::Users' do
end end
end end
context 'when a user is locked', time_travel_to: '2020-02-25 10:30:45 -0700' do
let_it_be(:locked_user) { create(:user, locked_at: DateTime.parse('2020-02-25 10:30:00 -0700')) }
it "displays `Locked` badge next to user" do
expect(page).to have_content("#{locked_user.name} Locked")
end
it 'allows a user to be unlocked from the `User administration dropdown', :js do
accept_gl_confirm("Unlock user #{locked_user.name}?", button_text: 'Unlock') do
click_action_in_user_dropdown(locked_user.id, 'Unlock')
end
expect(page).not_to have_content("#{locked_user.name} (Locked)")
end
end
describe 'internal users' do describe 'internal users' do
context 'when showing a `Ghost User`' do context 'when showing a `Ghost User`' do
let_it_be(:ghost_user) { create(:user, :ghost) } let_it_be(:ghost_user) { create(:user, :ghost) }
......
...@@ -122,7 +122,7 @@ RSpec.describe UsersHelper do ...@@ -122,7 +122,7 @@ RSpec.describe UsersHelper do
badges = helper.user_badges_in_admin_section(blocked_user) badges = helper.user_badges_in_admin_section(blocked_user)
expect(filter_ee_badges(badges)).to eq([text: "Blocked", variant: "danger"]) expect(filter_ee_badges(badges)).to match_array([text: "Blocked", variant: "danger"])
end end
end end
...@@ -132,7 +132,7 @@ RSpec.describe UsersHelper do ...@@ -132,7 +132,7 @@ RSpec.describe UsersHelper do
badges = helper.user_badges_in_admin_section(blocked_pending_approval_user) badges = helper.user_badges_in_admin_section(blocked_pending_approval_user)
expect(filter_ee_badges(badges)).to eq([text: 'Pending approval', variant: 'info']) expect(filter_ee_badges(badges)).to match_array([text: 'Pending approval', variant: 'info'])
end end
end end
...@@ -142,7 +142,7 @@ RSpec.describe UsersHelper do ...@@ -142,7 +142,7 @@ RSpec.describe UsersHelper do
badges = helper.user_badges_in_admin_section(banned_user) badges = helper.user_badges_in_admin_section(banned_user)
expect(filter_ee_badges(badges)).to eq([text: 'Banned', variant: 'danger']) expect(filter_ee_badges(badges)).to match_array([text: 'Banned', variant: 'danger'])
end end
end end
...@@ -152,7 +152,7 @@ RSpec.describe UsersHelper do ...@@ -152,7 +152,7 @@ RSpec.describe UsersHelper do
badges = helper.user_badges_in_admin_section(admin_user) badges = helper.user_badges_in_admin_section(admin_user)
expect(filter_ee_badges(badges)).to eq([text: "Admin", variant: "success"]) expect(filter_ee_badges(badges)).to match_array([text: "Admin", variant: "success"])
end end
end end
...@@ -162,7 +162,7 @@ RSpec.describe UsersHelper do ...@@ -162,7 +162,7 @@ RSpec.describe UsersHelper do
badges = helper.user_badges_in_admin_section(external_user) badges = helper.user_badges_in_admin_section(external_user)
expect(filter_ee_badges(badges)).to eq([text: "External", variant: "secondary"]) expect(filter_ee_badges(badges)).to match_array([text: "External", variant: "secondary"])
end end
end end
...@@ -170,7 +170,7 @@ RSpec.describe UsersHelper do ...@@ -170,7 +170,7 @@ RSpec.describe UsersHelper do
it 'returns the "It\'s You" badge' do it 'returns the "It\'s You" badge' do
badges = helper.user_badges_in_admin_section(user) badges = helper.user_badges_in_admin_section(user)
expect(filter_ee_badges(badges)).to eq([text: "It's you!", variant: "muted"]) expect(filter_ee_badges(badges)).to match_array([text: "It's you!", variant: "muted"])
end end
end end
...@@ -180,7 +180,7 @@ RSpec.describe UsersHelper do ...@@ -180,7 +180,7 @@ RSpec.describe UsersHelper do
badges = helper.user_badges_in_admin_section(user) badges = helper.user_badges_in_admin_section(user)
expect(badges).to eq([ expect(badges).to match_array([
{ text: "Blocked", variant: "danger" }, { text: "Blocked", variant: "danger" },
{ text: "Admin", variant: "success" }, { text: "Admin", variant: "success" },
{ text: "External", variant: "secondary" } { text: "External", variant: "secondary" }
...@@ -188,6 +188,16 @@ RSpec.describe UsersHelper do ...@@ -188,6 +188,16 @@ RSpec.describe UsersHelper do
end end
end end
context 'with a locked user', time_travel_to: '2020-02-25 10:30:45 -0700' do
it 'returns the "Locked" badge' do
locked_user = create(:user, locked_at: DateTime.parse('2020-02-25 10:30:00 -0700'))
badges = helper.user_badges_in_admin_section(locked_user)
expect(filter_ee_badges(badges)).to match_array([text: "Locked", variant: "warning"])
end
end
context 'get badges for normal user' do context 'get badges for normal user' do
it 'returns no badges' do it 'returns no badges' do
user = create(:user) user = create(:user)
......
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