diff --git a/Oqtane.Client/Modules/Admin/Users/Edit.razor b/Oqtane.Client/Modules/Admin/Users/Edit.razor index 2d75d27a..35e43bb9 100644 --- a/Oqtane.Client/Modules/Admin/Users/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Users/Edit.razor @@ -153,7 +153,7 @@ @SharedLocalizer["Save"] @SharedLocalizer["Cancel"] - @if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin) && PageState.Runtime != Shared.Runtime.Hybrid && !_ishost) + @if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin) && PageState.Runtime != Shared.Runtime.Hybrid && !_ishost && _isdeleted != "True") { @Localizer["Impersonate"] } diff --git a/Oqtane.Client/Modules/Admin/Users/Index.razor b/Oqtane.Client/Modules/Admin/Users/Index.razor index 7e53d87e..53218b3c 100644 --- a/Oqtane.Client/Modules/Admin/Users/Index.razor +++ b/Oqtane.Client/Modules/Admin/Users/Index.razor @@ -17,8 +17,21 @@ else { - - + + + + + + + + DeletedChanged(e))"> + @Localizer["Active Users"] + @Localizer["Deleted Users"] + + + + + @@ -495,6 +508,7 @@ else @code { private List users; + private string _deleted = "false"; private string _allowregistration; private string _registerurl; @@ -564,7 +578,7 @@ else protected override async Task OnInitializedAsync() { - await LoadUsersAsync(true); + await LoadUsersAsync(); var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId); _allowregistration = PageState.Site.AllowRegistration.ToString().ToLower(); @@ -636,20 +650,32 @@ else _allowsitelogin = SettingService.GetSetting(settings, "LoginOptions:AllowSiteLogin", "true"); } - private async Task LoadUsersAsync(bool load) + private async Task LoadUsersAsync() { - if (load) + users = await UserRoleService.GetUserRolesAsync(PageState.Site.SiteId, RoleNames.Registered); + if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) { - users = await UserRoleService.GetUserRolesAsync(PageState.Site.SiteId, RoleNames.Registered); - if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) - { - var hosts = await UserRoleService.GetUserRolesAsync(PageState.Site.SiteId, RoleNames.Host); - users.AddRange(hosts); - users = users.OrderBy(u => u.User.DisplayName).ToList(); - } + var hosts = await UserRoleService.GetUserRolesAsync(PageState.Site.SiteId, RoleNames.Host); + users.AddRange(hosts); + users = users.OrderBy(u => u.User.DisplayName).ToList(); } + users = users.Where(item => item.User.IsDeleted == bool.Parse(_deleted)).ToList(); } + private async void DeletedChanged(ChangeEventArgs e) + { + try + { + _deleted = e.Value.ToString(); + await LoadUsersAsync(); + StateHasChanged(); + } + catch (Exception ex) + { + await logger.LogError(ex, "Error On DeletedChanged"); + } + } + private async Task DeleteUser(UserRole UserRole) { try @@ -672,7 +698,7 @@ else await logger.LogInformation("User {Username} Expired From Role {Role}", userrole.User.Username, userrole.Role.Name); } AddModuleMessage(Localizer["Success.DeleteUser"], MessageType.Success); - await LoadUsersAsync(true); + await LoadUsersAsync(); StateHasChanged(); } catch (Exception ex) diff --git a/Oqtane.Client/Resources/Modules/Admin/Users/Index.resx b/Oqtane.Client/Resources/Modules/Admin/Users/Index.resx index 1a008727..16e0d40e 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Users/Index.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Users/Index.resx @@ -537,4 +537,10 @@ Indicate if host roles are supported from the identity provider. Please use caution with this option as it allows the host user to administrate every site within your installation. + + Active Users + + + Deleted Users + \ No newline at end of file