Allow to check permissions without defining them.

pull/13806/head
Halil İbrahim Kalkan 3 years ago
parent a82c9fc208
commit 8b795f9828

@ -43,7 +43,11 @@ public class PermissionChecker : IPermissionChecker, ITransientDependency
{
Check.NotNull(name, nameof(name));
var permission = await PermissionDefinitionManager.GetAsync(name);
var permission = await PermissionDefinitionManager.GetOrNullAsync(name);
if (permission == null)
{
return false;
}
if (!permission.IsEnabled)
{
@ -97,18 +101,24 @@ public class PermissionChecker : IPermissionChecker, ITransientDependency
{
Check.NotNull(names, nameof(names));
var multiTenancySide = claimsPrincipal?.GetMultiTenancySide() ?? CurrentTenant.GetMultiTenancySide();
var result = new MultiplePermissionGrantResult();
if (!names.Any())
{
return result;
}
var multiTenancySide = claimsPrincipal?.GetMultiTenancySide() ??
CurrentTenant.GetMultiTenancySide();
var permissionDefinitions = new List<PermissionDefinition>();
foreach (var name in names)
{
var permission = await PermissionDefinitionManager.GetAsync(name);
var permission = await PermissionDefinitionManager.GetOrNullAsync(name);
if (permission == null)
{
result.Result.Add(name, PermissionGrantResult.Prohibited);
continue;
}
result.Result.Add(name, PermissionGrantResult.Undefined);

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

Loading…
Cancel
Save