Browse Source
Prevent child permissions for resource permissions
pull/24374/head
maliming
3 months ago
No known key found for this signature in database
GPG Key ID: A646B9CB645ECEA4
2 changed files with
10 additions and
0 deletions
-
framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinition.cs
-
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/Resources/AuthorizationTestResourcePermissionDefinitionProvider.cs
|
|
@ -115,6 +115,11 @@ public class PermissionDefinition : |
|
|
MultiTenancySides multiTenancySide = MultiTenancySides.Both, |
|
|
MultiTenancySides multiTenancySide = MultiTenancySides.Both, |
|
|
bool isEnabled = true) |
|
|
bool isEnabled = true) |
|
|
{ |
|
|
{ |
|
|
|
|
|
if (ResourceName != null) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new AbpException($"Resource permission cannot have child permissions. Resource: {ResourceName}"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
var child = new PermissionDefinition( |
|
|
var child = new PermissionDefinition( |
|
|
name, |
|
|
name, |
|
|
displayName, |
|
|
displayName, |
|
|
|
|
|
@ -1,5 +1,6 @@ |
|
|
using Shouldly; |
|
|
using Shouldly; |
|
|
using Volo.Abp.Authorization.Permissions; |
|
|
using Volo.Abp.Authorization.Permissions; |
|
|
|
|
|
using Xunit; |
|
|
|
|
|
|
|
|
namespace Volo.Abp.Authorization.TestServices.Resources; |
|
|
namespace Volo.Abp.Authorization.TestServices.Resources; |
|
|
|
|
|
|
|
|
@ -8,6 +9,10 @@ public class AuthorizationTestResourcePermissionDefinitionProvider : PermissionD |
|
|
public override void Define(IPermissionDefinitionContext context) |
|
|
public override void Define(IPermissionDefinitionContext context) |
|
|
{ |
|
|
{ |
|
|
var permission1 = context.AddResourcePermission("MyResourcePermission1", resourceName: TestEntityResource.ResourceName); |
|
|
var permission1 = context.AddResourcePermission("MyResourcePermission1", resourceName: TestEntityResource.ResourceName); |
|
|
|
|
|
Assert.Throws<AbpException>(() => |
|
|
|
|
|
{ |
|
|
|
|
|
permission1.AddChild("MyResourcePermission1.ChildPermission1"); |
|
|
|
|
|
}).Message.ShouldBe($"Resource permission cannot have child permissions. Resource: {TestEntityResource.ResourceName}"); |
|
|
permission1.StateCheckers.Add(new TestRequireEditionPermissionSimpleStateChecker());; |
|
|
permission1.StateCheckers.Add(new TestRequireEditionPermissionSimpleStateChecker());; |
|
|
permission1[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName].ShouldBe(typeof(AuthorizationTestResourcePermissionDefinitionProvider).FullName); |
|
|
permission1[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName].ShouldBe(typeof(AuthorizationTestResourcePermissionDefinitionProvider).FullName); |
|
|
|
|
|
|
|
|
|