diff --git a/Oqtane.Client/Modules/Admin/Roles/Users.razor b/Oqtane.Client/Modules/Admin/Roles/Users.razor index 16ab3a5ea..c8049b18c 100644 --- a/Oqtane.Client/Modules/Admin/Roles/Users.razor +++ b/Oqtane.Client/Modules/Admin/Roles/Users.razor @@ -58,12 +58,16 @@ else
@Localizer["Users"] + @Localizer["Effective"] + @Localizer["Expiry"]  
@context.User.DisplayName + @context.EffectiveDate + @context.ExpiryDate - +
diff --git a/Oqtane.Client/Modules/Admin/Users/Index.razor b/Oqtane.Client/Modules/Admin/Users/Index.razor index 6b74a2774..4245c649c 100644 --- a/Oqtane.Client/Modules/Admin/Users/Index.razor +++ b/Oqtane.Client/Modules/Admin/Users/Index.razor @@ -36,10 +36,7 @@ else - @if (context.Role.Name != RoleNames.Host) - { - - } + diff --git a/Oqtane.Client/Modules/Admin/Users/Roles.razor b/Oqtane.Client/Modules/Admin/Users/Roles.razor index 03d9e32e3..13c4e7806 100644 --- a/Oqtane.Client/Modules/Admin/Users/Roles.razor +++ b/Oqtane.Client/Modules/Admin/Users/Roles.razor @@ -59,15 +59,16 @@ else
@Localizer["Roles"] + @Localizer["Effective"] + @Localizer["Expiry"]  
@context.Role.Name + @context.EffectiveDate + @context.ExpiryDate - @if (context.Role.Name != RoleNames.Registered && (context.Role.Name != RoleNames.Host || userid != PageState.User.UserId)) - { - - } +
@@ -95,6 +96,7 @@ else if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) { roles = await RoleService.GetRolesAsync(PageState.Site.SiteId, true); + roles = roles.Where(item => item.Name != RoleNames.Everyone).ToList(); } else { diff --git a/Oqtane.Server/Controllers/RoleController.cs b/Oqtane.Server/Controllers/RoleController.cs index d04a59cb6..0e8425093 100644 --- a/Oqtane.Server/Controllers/RoleController.cs +++ b/Oqtane.Server/Controllers/RoleController.cs @@ -28,7 +28,7 @@ public IEnumerable Get(string siteid, string global) { if (string.IsNullOrEmpty(global)) { - global = "false"; + global = "False"; } return _roles.GetRoles(int.Parse(siteid), bool.Parse(global)); } @@ -72,8 +72,12 @@ public Role Put(int id, [FromBody] Role role) [Authorize(Roles = RoleNames.Admin)] public void Delete(int id) { - _roles.DeleteRole(id); - _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Role Deleted {RoleId}", id); + var role = _roles.GetRole(id); + if (!role.IsSystem) + { + _roles.DeleteRole(id); + _logger.Log(LogLevel.Information, this, LogFunction.Delete, "Role Deleted {RoleId}", id); + } } } } diff --git a/Oqtane.Server/Controllers/UserRoleController.cs b/Oqtane.Server/Controllers/UserRoleController.cs index d8fa360bd..f7d9059db 100644 --- a/Oqtane.Server/Controllers/UserRoleController.cs +++ b/Oqtane.Server/Controllers/UserRoleController.cs @@ -52,16 +52,16 @@ public UserRole Post([FromBody] UserRole userRole) var role = _roles.GetRole(userRole.RoleId); if (ModelState.IsValid && (User.IsInRole(RoleNames.Host) || role.Name != RoleNames.Host)) { - userRole = _userRoles.AddUserRole(userRole); - _logger.Log(LogLevel.Information, this, LogFunction.Create, "User Role Added {UserRole}", userRole); - if (role.Name == RoleNames.Host) { // host roles can only exist at global level - remove all site specific user roles _userRoles.DeleteUserRoles(userRole.UserId); - _logger.Log(LogLevel.Information, this, LogFunction.Create, "User Roles Deleted For UserId {UserId}", userRole.UserId); + _logger.Log(LogLevel.Information, this, LogFunction.Delete, "User Roles Deleted For UserId {UserId}", userRole.UserId); } + userRole = _userRoles.AddUserRole(userRole); + _logger.Log(LogLevel.Information, this, LogFunction.Create, "User Role Added {UserRole}", userRole); + _syncManager.AddSyncEvent(_tenants.GetTenant().TenantId, EntityNames.User, userRole.UserId); } return userRole; @@ -98,10 +98,10 @@ public void Delete(int id) // add site specific user roles to preserve user access var role = _roles.GetRoles(_tenants.GetAlias().SiteId).FirstOrDefault(item => item.Name == RoleNames.Registered); userRole = _userRoles.AddUserRole(new UserRole { UserId = userRole.UserId, RoleId = role.RoleId, EffectiveDate = null, ExpiryDate = null }); - _logger.Log(LogLevel.Information, this, LogFunction.Delete, "User Role Added {UserRole}", userRole); + _logger.Log(LogLevel.Information, this, LogFunction.Create, "User Role Added {UserRole}", userRole); role = _roles.GetRoles(_tenants.GetAlias().SiteId).FirstOrDefault(item => item.Name == RoleNames.Admin); userRole = _userRoles.AddUserRole(new UserRole { UserId = userRole.UserId, RoleId = role.RoleId, EffectiveDate = null, ExpiryDate = null }); - _logger.Log(LogLevel.Information, this, LogFunction.Delete, "User Role Added {UserRole}", userRole); + _logger.Log(LogLevel.Information, this, LogFunction.Create, "User Role Added {UserRole}", userRole); } _syncManager.AddSyncEvent(_tenants.GetTenant().TenantId, EntityNames.User, userRole.UserId); diff --git a/Oqtane.Server/Repository/RoleRepository.cs b/Oqtane.Server/Repository/RoleRepository.cs index f41cc31f6..b8afb4a46 100644 --- a/Oqtane.Server/Repository/RoleRepository.cs +++ b/Oqtane.Server/Repository/RoleRepository.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Microsoft.EntityFrameworkCore; using Oqtane.Models; @@ -16,12 +16,19 @@ public RoleRepository(TenantDBContext context) public IEnumerable GetRoles(int siteId) { - return _db.Role.Where(item => item.SiteId == siteId); + return GetRoles(siteId, false); } public IEnumerable GetRoles(int siteId, bool includeGlobalRoles) { - return _db.Role.Where(item => item.SiteId == siteId || item.SiteId == null); + if (includeGlobalRoles) + { + return _db.Role.Where(item => item.SiteId == siteId || item.SiteId == null); + } + else + { + return _db.Role.Where(item => item.SiteId == siteId); + } } public Role AddRole(Role role)