Browse Source

Improved

pull/9784/head
liangshiwei 5 years ago
parent
commit
c8eefb5bc4
  1. 30
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RolePermissionManagementProvider.cs
  2. 34
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs

30
modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RolePermissionManagementProvider.cs

@ -30,30 +30,9 @@ namespace Volo.Abp.PermissionManagement.Identity
public override async Task<PermissionValueProviderGrantInfo> CheckAsync(string name, string providerName, string providerKey) public override async Task<PermissionValueProviderGrantInfo> CheckAsync(string name, string providerName, string providerKey)
{ {
if (providerName == Name) var multipleGrantInfo = await CheckAsync(new[] {name}, providerName, providerKey);
{
return new PermissionValueProviderGrantInfo(
await PermissionGrantRepository.FindAsync(name, providerName, providerKey) != null,
providerKey
);
}
if (providerName == UserPermissionValueProvider.ProviderName)
{
var userId = Guid.Parse(providerKey);
var roleNames = await UserRoleFinder.GetRolesAsync(userId);
foreach (var roleName in roleNames)
{
var permissionGrant = await PermissionGrantRepository.FindAsync(name, Name, roleName);
if (permissionGrant != null)
{
return new PermissionValueProviderGrantInfo(true, roleName);
}
}
}
return PermissionValueProviderGrantInfo.NonGranted; return multipleGrantInfo.Result.Values.First();
} }
public override async Task<MultiplePermissionValueProviderGrantInfo> CheckAsync(string[] names, string providerName, string providerKey) public override async Task<MultiplePermissionValueProviderGrantInfo> CheckAsync(string[] names, string providerName, string providerKey)
@ -85,9 +64,10 @@ namespace Volo.Abp.PermissionManagement.Identity
foreach (var permissionName in names) foreach (var permissionName in names)
{ {
if (permissionGrants.Any(x => x.Name == permissionName)) var permissionGrant = permissionGrants.FirstOrDefault(x => x.Name == permissionName);
if (permissionGrant != null)
{ {
multiplePermissionValueProviderGrantInfo.Result[permissionName] = new PermissionValueProviderGrantInfo(true, providerKey); multiplePermissionValueProviderGrantInfo.Result[permissionName] = new PermissionValueProviderGrantInfo(true, permissionGrant.ProviderKey);
} }
} }

34
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs

@ -150,39 +150,9 @@ namespace Volo.Abp.PermissionManagement
protected virtual async Task<PermissionWithGrantedProviders> GetInternalAsync(PermissionDefinition permission, string providerName, string providerKey) protected virtual async Task<PermissionWithGrantedProviders> GetInternalAsync(PermissionDefinition permission, string providerName, string providerKey)
{ {
var result = new PermissionWithGrantedProviders(permission.Name, false); var multiplePermissionWithGrantedProviders = await GetInternalAsync(new PermissionDefinition[]{permission}, providerName, providerKey);
if (!permission.IsEnabled) return multiplePermissionWithGrantedProviders.Result.First();
{
return result;
}
if (!await SimpleStateCheckerManager.IsEnabledAsync(permission))
{
return result;
}
if (!permission.MultiTenancySide.HasFlag(CurrentTenant.GetMultiTenancySide()))
{
return result;
}
if (permission.Providers.Any() && !permission.Providers.Contains(providerName))
{
return result;
}
foreach (var provider in ManagementProviders)
{
var providerResult = await provider.CheckAsync(permission.Name, providerName, providerKey);
if (providerResult.IsGranted)
{
result.IsGranted = true;
result.Providers.Add(new PermissionValueProviderInfo(provider.Name, providerResult.ProviderKey));
}
}
return result;
} }
protected virtual async Task<MultiplePermissionWithGrantedProviders> GetInternalAsync(PermissionDefinition[] permissions, string providerName, string providerKey) protected virtual async Task<MultiplePermissionWithGrantedProviders> GetInternalAsync(PermissionDefinition[] permissions, string providerName, string providerKey)

Loading…
Cancel
Save