Merge pull request #17616 from abpframework/auto-merge/rel-7-3/2179

Merge branch rel-7.4 with rel-7.3
pull/17617/head
maliming 2 years ago committed by GitHub
commit cb21652fe8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -138,7 +138,7 @@ public class PermissionChecker : IPermissionChecker, ITransientDependency
if (permissions.IsNullOrEmpty())
{
break;
continue;
}
var context = new PermissionValuesCheckContext(

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Authorization.TestServices;
using Volo.Abp.Autofac;
using Volo.Abp.DynamicProxy;
@ -23,4 +24,13 @@ public class AbpAuthorizationTestModule : AbpModule
}
});
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpPermissionOptions>(options =>
{
options.ValueProviders.Add<TestPermissionValueProvider1>();
options.ValueProviders.Add<TestPermissionValueProvider2>();
});
}
}

@ -0,0 +1,49 @@
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.Authorization.Permissions;
using Xunit;
namespace Volo.Abp.Authorization;
public class PermissionChecker_Tests: AuthorizationTestBase
{
private readonly IPermissionChecker _permissionChecker;
public PermissionChecker_Tests()
{
_permissionChecker = GetRequiredService<IPermissionChecker>();
}
[Fact]
public async Task IsGrantedAsync()
{
(await _permissionChecker.IsGrantedAsync("MyPermission5")).ShouldBe(true);
(await _permissionChecker.IsGrantedAsync("UndefinedPermission")).ShouldBe(false);
}
[Fact]
public async Task IsGranted_Multiple_Result_Async()
{
var result = await _permissionChecker.IsGrantedAsync(new []
{
"MyPermission1",
"MyPermission2",
"UndefinedPermission",
"MyPermission3",
"MyPermission4",
"MyPermission5",
"MyPermission6",
"MyPermission7"
});
result.Result["MyPermission1"].ShouldBe(PermissionGrantResult.Undefined);
result.Result["MyPermission2"].ShouldBe(PermissionGrantResult.Prohibited);
result.Result["UndefinedPermission"].ShouldBe(PermissionGrantResult.Prohibited);
result.Result["MyPermission3"].ShouldBe(PermissionGrantResult.Granted);
result.Result["MyPermission4"].ShouldBe(PermissionGrantResult.Prohibited);
result.Result["MyPermission5"].ShouldBe(PermissionGrantResult.Granted);
result.Result["MyPermission6"].ShouldBe(PermissionGrantResult.Granted);
result.Result["MyPermission7"].ShouldBe(PermissionGrantResult.Granted);
}
}

@ -22,6 +22,8 @@ public class AuthorizationTestPermissionDefinitionProvider : PermissionDefinitio
group.AddPermission("MyPermission3");
group.AddPermission("MyPermission4");
group.AddPermission("MyPermission5");
group.AddPermission("MyPermission6").WithProviders(nameof(TestPermissionValueProvider1));
group.AddPermission("MyPermission7").WithProviders(nameof(TestPermissionValueProvider2));
group.GetPermissionOrNull("MyAuthorizedService1").ShouldNotBeNull();

@ -0,0 +1,38 @@
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Authorization.Permissions;
namespace Volo.Abp.Authorization.TestServices;
public class TestPermissionValueProvider1 : PermissionValueProvider
{
public TestPermissionValueProvider1(IPermissionStore permissionStore) : base(permissionStore)
{
}
public override string Name => "TestPermissionValueProvider1";
public override Task<PermissionGrantResult> CheckAsync(PermissionValueCheckContext context)
{
var result = PermissionGrantResult.Undefined;
if (context.Permission.Name == "MyPermission6")
{
result = PermissionGrantResult.Granted;
}
return Task.FromResult(result);
}
public override Task<MultiplePermissionGrantResult> CheckAsync(PermissionValuesCheckContext context)
{
var result = new MultiplePermissionGrantResult();
foreach (var name in context.Permissions.Select(x => x.Name))
{
result.Result.Add(name, name == "MyPermission6"
? PermissionGrantResult.Granted
: PermissionGrantResult.Undefined);
}
return Task.FromResult(result);
}
}

@ -0,0 +1,38 @@
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Authorization.Permissions;
namespace Volo.Abp.Authorization.TestServices;
public class TestPermissionValueProvider2 : PermissionValueProvider
{
public TestPermissionValueProvider2(IPermissionStore permissionStore) : base(permissionStore)
{
}
public override string Name => "TestPermissionValueProvider2";
public override Task<PermissionGrantResult> CheckAsync(PermissionValueCheckContext context)
{
var result = PermissionGrantResult.Undefined;
if (context.Permission.Name == "MyPermission7")
{
result = PermissionGrantResult.Granted;
}
return Task.FromResult(result);
}
public override Task<MultiplePermissionGrantResult> CheckAsync(PermissionValuesCheckContext context)
{
var result = new MultiplePermissionGrantResult();
foreach (var name in context.Permissions.Select(x => x.Name))
{
result.Result.Add(name, name == "MyPermission7"
? PermissionGrantResult.Granted
: PermissionGrantResult.Undefined);
}
return Task.FromResult(result);
}
}
Loading…
Cancel
Save