fix #2624 - permission grid behavior issues
This commit is contained in:
parent
7871f0f3ce
commit
1f29f77f66
|
@ -106,7 +106,7 @@
|
||||||
public string PermissionNames { get; set; }
|
public string PermissionNames { get; set; }
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public string Permissions { get; set; }
|
public string Permissions { get; set; } // deprecated - use PermissionList instead
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public List<Permission> PermissionList { get; set; }
|
public List<Permission> PermissionList { get; set; }
|
||||||
|
@ -138,6 +138,22 @@
|
||||||
|
|
||||||
// initialize permissions
|
// initialize permissions
|
||||||
_permissions = new List<Permission>();
|
_permissions = new List<Permission>();
|
||||||
|
if (PermissionList.Any())
|
||||||
|
{
|
||||||
|
foreach (var permission in PermissionList)
|
||||||
|
{
|
||||||
|
_permissions.Add(permission);
|
||||||
|
if (permission.UserId != null)
|
||||||
|
{
|
||||||
|
if (!_users.Any(item => item.UserId == permission.UserId.Value))
|
||||||
|
{
|
||||||
|
_users.Add(await UserService.GetUserAsync(permission.UserId.Value, ModuleState.SiteId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
foreach (string permissionname in _permissionnames)
|
foreach (string permissionname in _permissionnames)
|
||||||
{
|
{
|
||||||
// permission names can be in the form of "EntityName:PermissionName:Roles"
|
// permission names can be in the form of "EntityName:PermissionName:Roles"
|
||||||
|
@ -162,24 +178,6 @@
|
||||||
_permissions.Add(new Permission(EntityName, permissionname, RoleNames.Admin, null, true));
|
_permissions.Add(new Permission(EntityName, permissionname, RoleNames.Admin, null, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// populate permissions and users
|
|
||||||
if (PermissionList.Any())
|
|
||||||
{
|
|
||||||
foreach (var permission in PermissionList)
|
|
||||||
{
|
|
||||||
if (!_permissions.Any(item => item.EntityName == permission.EntityName && item.PermissionName == permission.PermissionName && item.Role.Name == permission.Role.Name))
|
|
||||||
{
|
|
||||||
_permissions.Add(permission);
|
|
||||||
}
|
|
||||||
if (permission.UserId != null)
|
|
||||||
{
|
|
||||||
if (!_users.Any(item => item.UserId == permission.UserId.Value))
|
|
||||||
{
|
|
||||||
_users.Add(await UserService.GetUserAsync(permission.UserId.Value, ModuleState.SiteId));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,7 +244,7 @@
|
||||||
if (roleName != "")
|
if (roleName != "")
|
||||||
{
|
{
|
||||||
var permission = _permissions.FirstOrDefault(item => item.EntityName == GetEntityName(permissionName) && item.PermissionName == GetPermissionName(permissionName) && item.Role.Name == roleName);
|
var permission = _permissions.FirstOrDefault(item => item.EntityName == GetEntityName(permissionName) && item.PermissionName == GetPermissionName(permissionName) && item.Role.Name == roleName);
|
||||||
if (permission == null)
|
if (permission != null)
|
||||||
{
|
{
|
||||||
_permissions.Remove(permission);
|
_permissions.Remove(permission);
|
||||||
}
|
}
|
||||||
|
@ -258,7 +256,7 @@
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var permission = _permissions.FirstOrDefault(item => item.EntityName == GetEntityName(permissionName) && item.PermissionName == GetPermissionName(permissionName) && item.UserId == userId);
|
var permission = _permissions.FirstOrDefault(item => item.EntityName == GetEntityName(permissionName) && item.PermissionName == GetPermissionName(permissionName) && item.UserId == userId);
|
||||||
if (permission == null)
|
if (permission != null)
|
||||||
{
|
{
|
||||||
_permissions.Remove(permission);
|
_permissions.Remove(permission);
|
||||||
}
|
}
|
||||||
|
@ -309,7 +307,7 @@
|
||||||
{
|
{
|
||||||
// remove deny all users, unauthenticated, and registered users
|
// remove deny all users, unauthenticated, and registered users
|
||||||
var permissions = _permissions.Where(item => !item.IsAuthorized &&
|
var permissions = _permissions.Where(item => !item.IsAuthorized &&
|
||||||
(item.Role.Name == RoleNames.Everyone || item.Role.Name == RoleNames.Unauthenticated || item.Role.Name == RoleNames.Registered));
|
(item.Role.Name == RoleNames.Everyone || item.Role.Name == RoleNames.Unauthenticated || item.Role.Name == RoleNames.Registered)).ToList();
|
||||||
foreach (var permission in permissions)
|
foreach (var permission in permissions)
|
||||||
{
|
{
|
||||||
_permissions.Remove(permission);
|
_permissions.Remove(permission);
|
||||||
|
@ -318,7 +316,7 @@
|
||||||
{
|
{
|
||||||
// remove deny administrators and host users
|
// remove deny administrators and host users
|
||||||
permissions = _permissions.Where(item => !item.IsAuthorized &&
|
permissions = _permissions.Where(item => !item.IsAuthorized &&
|
||||||
(item.Role.Name == RoleNames.Admin || item.Role.Name == RoleNames.Host));
|
(item.Role.Name == RoleNames.Admin || item.Role.Name == RoleNames.Host)).ToList();
|
||||||
foreach (var permission in permissions)
|
foreach (var permission in permissions)
|
||||||
{
|
{
|
||||||
_permissions.Remove(permission);
|
_permissions.Remove(permission);
|
||||||
|
|
|
@ -1,13 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Oqtane.Models;
|
using Oqtane.Models;
|
||||||
using Microsoft.Extensions.Caching.Memory;
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
using Oqtane.Infrastructure;
|
using Oqtane.Infrastructure;
|
||||||
using Oqtane.Modules.Admin.Users;
|
|
||||||
|
|
||||||
namespace Oqtane.Repository
|
namespace Oqtane.Repository
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user