diff --git a/Oqtane.Client/Modules/Admin/Roles/Users.razor b/Oqtane.Client/Modules/Admin/Roles/Users.razor
index 16ab3a5e..c8049b18 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 6b74a277..4245c649 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 03d9e32e..13c4e780 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 d04a59cb..0e842509 100644
--- a/Oqtane.Server/Controllers/RoleController.cs
+++ b/Oqtane.Server/Controllers/RoleController.cs
@@ -28,7 +28,7 @@ namespace Oqtane.Controllers
{
if (string.IsNullOrEmpty(global))
{
- global = "false";
+ global = "False";
}
return _roles.GetRoles(int.Parse(siteid), bool.Parse(global));
}
@@ -72,8 +72,12 @@ namespace Oqtane.Controllers
[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 d8fa360b..f7d9059d 100644
--- a/Oqtane.Server/Controllers/UserRoleController.cs
+++ b/Oqtane.Server/Controllers/UserRoleController.cs
@@ -52,16 +52,16 @@ namespace Oqtane.Controllers
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 @@ namespace Oqtane.Controllers
// 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 f41cc31f..b8afb4a4 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 @@ namespace Oqtane.Repository
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)
|