From 0a2fd277a6a4f80a128582e469a67085bd82dc76 Mon Sep 17 00:00:00 2001 From: James Coxhead Date: Thu, 28 Jun 2018 19:54:42 +0100 Subject: [PATCH 1/5] U4-11166 Hide disabled users from the users list view --- src/Umbraco.Web/Editors/UsersController.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Umbraco.Web/Editors/UsersController.cs b/src/Umbraco.Web/Editors/UsersController.cs index f1670df346..64ebf1703f 100644 --- a/src/Umbraco.Web/Editors/UsersController.cs +++ b/src/Umbraco.Web/Editors/UsersController.cs @@ -241,6 +241,11 @@ namespace Umbraco.Web.Editors filterQuery.Where(x => x.Name.Contains(filter) || x.Username.Contains(filter)); } + if (UmbracoConfig.For.UmbracoSettings().Security.HideDisabledUsersInBackoffice) + { + filterQuery.Where(user => !user.IsApproved); + } + long pageIndex = pageNumber - 1; long total; var result = Services.UserService.GetAll(pageIndex, pageSize, out total, orderBy, orderDirection, userStates, userGroups, excludeUserGroups, filterQuery); From 3078be93b65fbf844918604f8d138ed934153b17 Mon Sep 17 00:00:00 2001 From: James Coxhead Date: Thu, 5 Jul 2018 21:07:12 +0100 Subject: [PATCH 2/5] Remove disabled users option from users list view filter --- src/Umbraco.Web/Editors/UsersController.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Umbraco.Web/Editors/UsersController.cs b/src/Umbraco.Web/Editors/UsersController.cs index 64ebf1703f..ae65152944 100644 --- a/src/Umbraco.Web/Editors/UsersController.cs +++ b/src/Umbraco.Web/Editors/UsersController.cs @@ -219,6 +219,7 @@ namespace Umbraco.Web.Editors // so to do that here, we'll need to check if this current user is an admin and if not we should exclude all user who are // also admins + var hideDisabledUsers = UmbracoConfig.For.UmbracoSettings().Security.HideDisabledUsersInBackoffice; var excludeUserGroups = new string[0]; var isAdmin = Security.CurrentUser.IsAdmin(); if (isAdmin == false) @@ -241,7 +242,7 @@ namespace Umbraco.Web.Editors filterQuery.Where(x => x.Name.Contains(filter) || x.Username.Contains(filter)); } - if (UmbracoConfig.For.UmbracoSettings().Security.HideDisabledUsersInBackoffice) + if (hideDisabledUsers) { filterQuery.Where(user => !user.IsApproved); } @@ -249,11 +250,14 @@ namespace Umbraco.Web.Editors long pageIndex = pageNumber - 1; long total; var result = Services.UserService.GetAll(pageIndex, pageSize, out total, orderBy, orderDirection, userStates, userGroups, excludeUserGroups, filterQuery); - + var paged = new PagedUserResult(total, pageNumber, pageSize) { Items = Mapper.Map>(result), - UserStates = Services.UserService.GetUserStates() + UserStates = hideDisabledUsers + ? Services.UserService.GetUserStates().Where(state => state.Key != UserState.Disabled) + .ToDictionary(state => state.Key, state => state.Value) + : Services.UserService.GetUserStates() }; return paged; From c4a787331ff1d61e6f75b49abd48d916d9817046 Mon Sep 17 00:00:00 2001 From: James Coxhead Date: Thu, 2 Aug 2018 21:54:00 +0100 Subject: [PATCH 3/5] Reverted previous commit to show disabled users in the status filter --- src/Umbraco.Web/Editors/UsersController.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Umbraco.Web/Editors/UsersController.cs b/src/Umbraco.Web/Editors/UsersController.cs index ae65152944..0561e45263 100644 --- a/src/Umbraco.Web/Editors/UsersController.cs +++ b/src/Umbraco.Web/Editors/UsersController.cs @@ -254,10 +254,7 @@ namespace Umbraco.Web.Editors var paged = new PagedUserResult(total, pageNumber, pageSize) { Items = Mapper.Map>(result), - UserStates = hideDisabledUsers - ? Services.UserService.GetUserStates().Where(state => state.Key != UserState.Disabled) - .ToDictionary(state => state.Key, state => state.Value) - : Services.UserService.GetUserStates() + UserStates = Services.UserService.GetUserStates() }; return paged; From f81dc1621082f29f50967aa0e166fabca59f797f Mon Sep 17 00:00:00 2001 From: James Coxhead Date: Thu, 2 Aug 2018 21:55:04 +0100 Subject: [PATCH 4/5] Specify which user states we want to include when getting all users --- src/Umbraco.Web/Editors/UsersController.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web/Editors/UsersController.cs b/src/Umbraco.Web/Editors/UsersController.cs index 0561e45263..89b1f8b238 100644 --- a/src/Umbraco.Web/Editors/UsersController.cs +++ b/src/Umbraco.Web/Editors/UsersController.cs @@ -244,7 +244,10 @@ namespace Umbraco.Web.Editors if (hideDisabledUsers) { - filterQuery.Where(user => !user.IsApproved); + if (userStates == null || userStates.Any() == false) + { + userStates = new[] { UserState.Active, UserState.Invited, UserState.LockedOut }; + } } long pageIndex = pageNumber - 1; From 9a774c8f9e339aa1a878862d69a0a0148b12f22b Mon Sep 17 00:00:00 2001 From: James Coxhead Date: Thu, 2 Aug 2018 22:01:45 +0100 Subject: [PATCH 5/5] Added inactive state for users who haven't logged in --- src/Umbraco.Core/Models/Membership/UserState.cs | 5 +++-- .../Persistence/Repositories/UserRepository.cs | 13 +++++++++++-- .../src/common/services/usershelper.service.js | 3 ++- src/Umbraco.Web/Editors/UsersController.cs | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Core/Models/Membership/UserState.cs b/src/Umbraco.Core/Models/Membership/UserState.cs index 5f6ee1615a..fc277b4fa3 100644 --- a/src/Umbraco.Core/Models/Membership/UserState.cs +++ b/src/Umbraco.Core/Models/Membership/UserState.cs @@ -9,6 +9,7 @@ Active = 0, Disabled = 1, LockedOut = 2, - Invited = 3 + Invited = 3, + Inactive = 4 } -} \ No newline at end of file +} diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index 5701cd1008..fb3f7b56ee 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -186,6 +186,8 @@ UNION SELECT '4CountOfLockedOut' AS colName, COUNT(id) AS num FROM umbracoUser WHERE userNoConsole = 1 UNION SELECT '5CountOfInvited' AS colName, COUNT(id) AS num FROM umbracoUser WHERE lastLoginDate IS NULL AND userDisabled = 1 AND invitedDate IS NOT NULL +UNION +SELECT '6CountOfDisabled' AS colName, COUNT(id) AS num FROM umbracoUser WHERE userDisabled = 0 AND userNoConsole = 0 AND lastLoginDate IS NULL ORDER BY colName"; var result = Database.Fetch(sql); @@ -196,7 +198,8 @@ ORDER BY colName"; {UserState.Active, (int)result[1].num}, {UserState.Disabled, (int)result[2].num}, {UserState.LockedOut, (int)result[3].num}, - {UserState.Invited, (int)result[4].num} + {UserState.Invited, (int)result[4].num}, + {UserState.Inactive, (int) result[5].num} }; } @@ -765,6 +768,12 @@ ORDER BY colName"; sb.Append("(userDisabled = 0 AND userNoConsole = 0 AND lastLoginDate IS NOT NULL)"); appended = true; } + if (userState.Contains(UserState.Inactive)) + { + if (appended) sb.Append(" OR "); + sb.Append("(userDisabled = 0 AND userNoConsole = 0 AND lastLoginDate IS NULL)"); + appended = true; + } if (userState.Contains(UserState.Disabled)) { if (appended) sb.Append(" OR "); @@ -915,4 +924,4 @@ ORDER BY colName"; } } -} \ No newline at end of file +} diff --git a/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js b/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js index 21fe84ff8d..6e20ce91ac 100644 --- a/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js +++ b/src/Umbraco.Web.UI.Client/src/common/services/usershelper.service.js @@ -8,7 +8,8 @@ { "value": 0, "name": "Active", "key": "Active", "color": "success" }, { "value": 1, "name": "Disabled", "key": "Disabled", "color": "danger" }, { "value": 2, "name": "Locked out", "key": "LockedOut", "color": "danger" }, - { "value": 3, "name": "Invited", "key": "Invited", "color": "warning" } + { "value": 3, "name": "Invited", "key": "Invited", "color": "warning" }, + { "value": 4, "name": "Inactive", "key": "Inactive", "color": "warning" } ]; angular.forEach(userStates, function (userState) { diff --git a/src/Umbraco.Web/Editors/UsersController.cs b/src/Umbraco.Web/Editors/UsersController.cs index 89b1f8b238..6df1733509 100644 --- a/src/Umbraco.Web/Editors/UsersController.cs +++ b/src/Umbraco.Web/Editors/UsersController.cs @@ -246,7 +246,7 @@ namespace Umbraco.Web.Editors { if (userStates == null || userStates.Any() == false) { - userStates = new[] { UserState.Active, UserState.Invited, UserState.LockedOut }; + userStates = new[] { UserState.Active, UserState.Invited, UserState.LockedOut, UserState.Inactive }; } }