Browse Source

Convert IPermissionDefinitionManager interface merthods to async

pull/13644/head
Halil İbrahim Kalkan 4 years ago
parent
commit
ea590ec1d9
  1. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs
  2. 13
      framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/IPermissionDefinitionManager.cs
  3. 20
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationPolicyProvider.cs
  4. 6
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs
  5. 21
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionDefinitionManager.cs
  6. 4
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/Authorization_Tests.cs
  7. 4
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/PermissionStateProvider_Tests.cs
  8. 2
      modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs
  9. 7
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeedContributor.cs
  10. 24
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs
  11. 5
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionStore.cs

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs

@ -171,7 +171,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
foreach (var policyName in policyNames)
{
if (await _defaultAuthorizationPolicyProvider.GetPolicyAsync(policyName) == null && _permissionDefinitionManager.GetOrNull(policyName) != null)
if (await _defaultAuthorizationPolicyProvider.GetPolicyAsync(policyName) == null && _permissionDefinitionManager.GetOrNullAsync(policyName) != null)
{
abpPolicyNames.Add(policyName);
}

13
framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/IPermissionDefinitionManager.cs

@ -1,17 +1,18 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using JetBrains.Annotations;
namespace Volo.Abp.Authorization.Permissions;
public interface IPermissionDefinitionManager
{
[NotNull]
PermissionDefinition Get([NotNull] string name);
[ItemNotNull]
Task<PermissionDefinition> GetAsync([NotNull] string name);
[CanBeNull]
PermissionDefinition GetOrNull([NotNull] string name);
[ItemCanBeNull]
Task<PermissionDefinition> GetOrNullAsync([NotNull] string name);
IReadOnlyList<PermissionDefinition> GetPermissions();
Task<IReadOnlyList<PermissionDefinition>> GetPermissionsAsync();
IReadOnlyList<PermissionGroupDefinition> GetGroups();
Task<IReadOnlyList<PermissionGroupDefinition>> GetGroupsAsync();
}

20
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationPolicyProvider.cs

@ -31,7 +31,7 @@ public class AbpAuthorizationPolicyProvider : DefaultAuthorizationPolicyProvider
return policy;
}
var permission = _permissionDefinitionManager.GetOrNull(policyName);
var permission = await _permissionDefinitionManager.GetOrNullAsync(policyName);
if (permission != null)
{
//TODO: Optimize & Cache!
@ -43,16 +43,14 @@ public class AbpAuthorizationPolicyProvider : DefaultAuthorizationPolicyProvider
return null;
}
public Task<List<string>> GetPoliciesNamesAsync()
public async Task<List<string>> GetPoliciesNamesAsync()
{
return Task.FromResult(
_options.GetPoliciesNames()
.Union(
_permissionDefinitionManager
.GetPermissions()
.Select(p => p.Name)
)
.ToList()
);
return _options.GetPoliciesNames()
.Union(
(await _permissionDefinitionManager
.GetPermissionsAsync())
.Select(p => p.Name)
)
.ToList();
}
}

6
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs

@ -43,8 +43,8 @@ public class PermissionChecker : IPermissionChecker, ITransientDependency
{
Check.NotNull(name, nameof(name));
var permission = PermissionDefinitionManager.Get(name);
var permission = await PermissionDefinitionManager.GetAsync(name);
if (!permission.IsEnabled)
{
return false;
@ -108,7 +108,7 @@ public class PermissionChecker : IPermissionChecker, ITransientDependency
var permissionDefinitions = new List<PermissionDefinition>();
foreach (var name in names)
{
var permission = PermissionDefinitionManager.Get(name);
var permission = await PermissionDefinitionManager.GetAsync(name);
result.Result.Add(name, PermissionGrantResult.Undefined);

21
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionDefinitionManager.cs

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection;
@ -38,9 +39,9 @@ public class PermissionDefinitionManager : IPermissionDefinitionManager, ISingle
);
}
public virtual PermissionDefinition Get(string name)
public virtual async Task<PermissionDefinition> GetAsync(string name)
{
var permission = GetOrNull(name);
var permission = await GetOrNullAsync(name);
if (permission == null)
{
@ -50,21 +51,25 @@ public class PermissionDefinitionManager : IPermissionDefinitionManager, ISingle
return permission;
}
public virtual PermissionDefinition GetOrNull(string name)
public virtual Task<PermissionDefinition> GetOrNullAsync(string name)
{
Check.NotNull(name, nameof(name));
return PermissionDefinitions.GetOrDefault(name);
return Task.FromResult(PermissionDefinitions.GetOrDefault(name));
}
public virtual IReadOnlyList<PermissionDefinition> GetPermissions()
public virtual Task<IReadOnlyList<PermissionDefinition>> GetPermissionsAsync()
{
return PermissionDefinitions.Values.ToImmutableList();
return Task.FromResult<IReadOnlyList<PermissionDefinition>>(
PermissionDefinitions.Values.ToImmutableList()
);
}
public IReadOnlyList<PermissionGroupDefinition> GetGroups()
public Task<IReadOnlyList<PermissionGroupDefinition>> GetGroupsAsync()
{
return PermissionGroupDefinitions.Values.ToImmutableList();
return Task.FromResult<IReadOnlyList<PermissionGroupDefinition>>(
PermissionGroupDefinitions.Values.ToImmutableList()
);
}
protected virtual Dictionary<string, PermissionDefinition> CreatePermissionDefinitions()

4
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/Authorization_Tests.cs

@ -67,9 +67,9 @@ public class Authorization_Tests : AuthorizationTestBase
}
[Fact]
public void Should_Permission_Definition_GetGroup()
public async Task Should_Permission_Definition_GetGroup()
{
_permissionDefinitionManager.GetGroups().Count.ShouldBe(1);
(await _permissionDefinitionManager.GetGroupsAsync()).Count.ShouldBe(1);
}
[Fact]

4
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/PermissionStateProvider_Tests.cs

@ -29,7 +29,7 @@ public class SpecifyPermissionStateProvider : PermissionStateProvider_Tests
[Fact]
public async Task PermissionState_Test()
{
var myPermission1 = PermissionDefinitionManager.Get("MyPermission1");
var myPermission1 = await PermissionDefinitionManager.GetAsync("MyPermission1");
myPermission1.StateCheckers.ShouldContain(x => x.GetType() == typeof(TestRequireEditionPermissionSimpleStateChecker));
(await StateCheckerManager.IsEnabledAsync(myPermission1)).ShouldBeFalse();
@ -54,7 +54,7 @@ public class GlobalPermissionStateProvider : PermissionStateProvider_Tests
[Fact]
public async Task Global_PermissionState_Test()
{
var myPermission2 = PermissionDefinitionManager.Get("MyPermission2");
var myPermission2 = await PermissionDefinitionManager.GetAsync("MyPermission2");
(await StateCheckerManager.IsEnabledAsync(myPermission2)).ShouldBeFalse();

2
modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs

@ -43,7 +43,7 @@ public class PermissionAppService : ApplicationService, IPermissionAppService
var multiTenancySide = CurrentTenant.GetMultiTenancySide();
foreach (var group in PermissionDefinitionManager.GetGroups())
foreach (var group in await PermissionDefinitionManager.GetGroupsAsync())
{
var groupDto = new PermissionGroupDto
{

7
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDataSeedContributor.cs

@ -23,17 +23,16 @@ public class PermissionDataSeedContributor : IDataSeedContributor, ITransientDep
CurrentTenant = currentTenant;
}
public virtual Task SeedAsync(DataSeedContext context)
public virtual async Task SeedAsync(DataSeedContext context)
{
var multiTenancySide = CurrentTenant.GetMultiTenancySide();
var permissionNames = PermissionDefinitionManager
.GetPermissions()
var permissionNames = (await PermissionDefinitionManager.GetPermissionsAsync())
.Where(p => p.MultiTenancySide.HasFlag(multiTenancySide))
.Where(p => !p.Providers.Any() || p.Providers.Contains(RolePermissionValueProvider.ProviderName))
.Select(p => p.Name)
.ToArray();
return PermissionDataSeeder.SeedAsync(
await PermissionDataSeeder.SeedAsync(
RolePermissionValueProvider.ProviderName,
"admin",
permissionNames,

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

@ -62,18 +62,32 @@ public class PermissionManager : IPermissionManager, ISingletonDependency
public virtual async Task<PermissionWithGrantedProviders> GetAsync(string permissionName, string providerName, string providerKey)
{
return await GetInternalAsync(PermissionDefinitionManager.Get(permissionName), providerName, providerKey);
return await GetInternalAsync(
await PermissionDefinitionManager.GetAsync(permissionName),
providerName,
providerKey
);
}
public virtual async Task<MultiplePermissionWithGrantedProviders> GetAsync(string[] permissionNames, string providerName, string providerKey)
{
var permissionDefinitions = permissionNames.Select(x => PermissionDefinitionManager.Get(x)).ToArray();
return await GetInternalAsync(permissionDefinitions, providerName, providerKey);
var permissionDefinitions = new PermissionDefinition[permissionNames.Length];
for (var i = 0; i < permissionNames.Length; i++)
{
permissionDefinitions[i] = await PermissionDefinitionManager.GetAsync(permissionNames[i]);
}
return await GetInternalAsync(
permissionDefinitions,
providerName,
providerKey
);
}
public virtual async Task<List<PermissionWithGrantedProviders>> GetAllAsync(string providerName, string providerKey)
{
var permissionDefinitions = PermissionDefinitionManager.GetPermissions().ToArray();
var permissionDefinitions = (await PermissionDefinitionManager.GetPermissionsAsync()).ToArray();
var multiplePermissionWithGrantedProviders = await GetInternalAsync(permissionDefinitions, providerName, providerKey);
@ -83,7 +97,7 @@ public class PermissionManager : IPermissionManager, ISingletonDependency
public virtual async Task SetAsync(string permissionName, string providerName, string providerKey, bool isGranted)
{
var permission = PermissionDefinitionManager.Get(permissionName);
var permission = await PermissionDefinitionManager.GetAsync(permissionName);
if (!permission.IsEnabled || !await SimpleStateCheckerManager.IsEnabledAsync(permission))
{

5
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionStore.cs

@ -67,7 +67,7 @@ public class PermissionStore : IPermissionStore, ITransientDependency
string currentName,
PermissionGrantCacheItem currentCacheItem)
{
var permissions = PermissionDefinitionManager.GetPermissions();
var permissions = await PermissionDefinitionManager.GetPermissionsAsync();
Logger.LogDebug($"Getting all granted permissions from the repository for this provider name,key: {providerName},{providerKey}");
@ -169,7 +169,8 @@ public class PermissionStore : IPermissionStore, ITransientDependency
string providerKey,
List<string> notCacheKeys)
{
var permissions = PermissionDefinitionManager.GetPermissions().Where(x => notCacheKeys.Any(k => GetPermissionNameFormCacheKeyOrNull(k) == x.Name)).ToList();
var permissions = (await PermissionDefinitionManager.GetPermissionsAsync())
.Where(x => notCacheKeys.Any(k => GetPermissionNameFormCacheKeyOrNull(k) == x.Name)).ToList();
Logger.LogDebug($"Getting not cache granted permissions from the repository for this provider name,key: {providerName},{providerKey}");

Loading…
Cancel
Save