diff --git a/Oqtane.Server/Controllers/SettingController.cs b/Oqtane.Server/Controllers/SettingController.cs index 9651d49e..0938e5c0 100644 --- a/Oqtane.Server/Controllers/SettingController.cs +++ b/Oqtane.Server/Controllers/SettingController.cs @@ -229,7 +229,8 @@ namespace Oqtane.Controllers authorized = true; if (permissionName == PermissionNames.Edit) { - authorized = User.IsInRole(RoleNames.Admin) || _userPermissions.IsAuthorized(User, _alias.SiteId, entityName, entityId, permissionName); + authorized = _userPermissions.IsAuthorized(User, _alias.SiteId, entityName, entityId, permissionName) || + _userPermissions.IsAuthorized(User, _alias.SiteId, entityName, -1, PermissionNames.Write, RoleNames.Admin); } break; } diff --git a/Oqtane.Server/Repository/PermissionRepository.cs b/Oqtane.Server/Repository/PermissionRepository.cs index 1dfb8078..55e96399 100644 --- a/Oqtane.Server/Repository/PermissionRepository.cs +++ b/Oqtane.Server/Repository/PermissionRepository.cs @@ -97,6 +97,7 @@ namespace Oqtane.Repository if (current.IsAuthorized != permission.IsAuthorized) { current.IsAuthorized = permission.IsAuthorized; + current.Role = null; // remove linked reference to Role which can cause errors in EF Core change tracking _db.Entry(current).State = EntityState.Modified; modified = true; }