From 9c6bab991b8aeda5947d5b17a27e2ce2854d38b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 13 Jun 2025 13:44:01 +0300 Subject: [PATCH 1/4] Set provider names to permission groups and permissions --- .../Properties/AssemblyInfo.cs | 20 +++++++++++++++++++ .../Permissions/PermissionDefinition.cs | 2 ++ .../PermissionDefinitionContext.cs | 16 ++++++++++++++- .../Permissions/PermissionGroupDefinition.cs | 2 ++ .../StaticPermissionDefinitionStore.cs | 3 +++ 5 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 framework/src/Volo.Abp.Authorization.Abstractions/Properties/AssemblyInfo.cs diff --git a/framework/src/Volo.Abp.Authorization.Abstractions/Properties/AssemblyInfo.cs b/framework/src/Volo.Abp.Authorization.Abstractions/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..f9e35084b9 --- /dev/null +++ b/framework/src/Volo.Abp.Authorization.Abstractions/Properties/AssemblyInfo.cs @@ -0,0 +1,20 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Volo.Abp.Authorization.Abstractions")] +[assembly: AssemblyTrademark("")] +[assembly: InternalsVisibleTo("Volo.Abp.Authorization")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("83632bec-2f60-4c2b-b964-30e8b37fa9d8")] diff --git a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinition.cs b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinition.cs index ab49e4aad4..740f8da51e 100644 --- a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinition.cs +++ b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinition.cs @@ -107,6 +107,8 @@ public class PermissionDefinition : { Parent = this }; + + child[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName] = this[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName]; _children.Add(child); diff --git a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinitionContext.cs b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinitionContext.cs index 85d771a6ab..d17e591385 100644 --- a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinitionContext.cs +++ b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinitionContext.cs @@ -11,6 +11,13 @@ public class PermissionDefinitionContext : IPermissionDefinitionContext public Dictionary Groups { get; } + internal IPermissionDefinitionProvider? CurrentProvider { get; set; } + + public static class KnownPropertyNames + { + public const string CurrentProviderName = "_CurrentProviderName"; + } + public PermissionDefinitionContext(IServiceProvider serviceProvider) { ServiceProvider = serviceProvider; @@ -27,8 +34,15 @@ public class PermissionDefinitionContext : IPermissionDefinitionContext { throw new AbpException($"There is already an existing permission group with name: {name}"); } + + var group = Groups[name] = new PermissionGroupDefinition(name, displayName); - return Groups[name] = new PermissionGroupDefinition(name, displayName); + if (CurrentProvider != null) + { + group[KnownPropertyNames.CurrentProviderName] = CurrentProvider.GetType().FullName; + } + + return group; } [NotNull] diff --git a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionGroupDefinition.cs b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionGroupDefinition.cs index bbc6e96cdf..0ad2dca099 100644 --- a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionGroupDefinition.cs +++ b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionGroupDefinition.cs @@ -61,6 +61,8 @@ public class PermissionGroupDefinition : ICanAddChildPermission isEnabled ); + permission[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName] = this[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName]; + _permissions.Add(permission); return permission; diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/StaticPermissionDefinitionStore.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/StaticPermissionDefinitionStore.cs index 2d0a9d668c..4570f94edc 100644 --- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/StaticPermissionDefinitionStore.cs +++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/StaticPermissionDefinitionStore.cs @@ -84,16 +84,19 @@ public class StaticPermissionDefinitionStore : IStaticPermissionDefinitionStore, foreach (var provider in providers) { + context.CurrentProvider = provider; provider.PreDefine(context); } foreach (var provider in providers) { + context.CurrentProvider = provider; provider.Define(context); } foreach (var provider in providers) { + context.CurrentProvider = provider; provider.PostDefine(context); } From ca27d849a47a24c497e79c62269600f03ace598f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 13 Jun 2025 13:46:24 +0300 Subject: [PATCH 2/4] Refactor --- .../Authorization/Permissions/PermissionDefinitionContext.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinitionContext.cs b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinitionContext.cs index d17e591385..ab0f72c452 100644 --- a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinitionContext.cs +++ b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/PermissionDefinitionContext.cs @@ -35,12 +35,14 @@ public class PermissionDefinitionContext : IPermissionDefinitionContext throw new AbpException($"There is already an existing permission group with name: {name}"); } - var group = Groups[name] = new PermissionGroupDefinition(name, displayName); + var group = new PermissionGroupDefinition(name, displayName); if (CurrentProvider != null) { group[KnownPropertyNames.CurrentProviderName] = CurrentProvider.GetType().FullName; } + + Groups[name] = group; return group; } From d8eca86c96f42355ea0b7fa3067107d3eae5ff8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 13 Jun 2025 13:50:24 +0300 Subject: [PATCH 3/4] Add test --- .../AuthorizationTestPermissionDefinitionProvider.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/AuthorizationTestPermissionDefinitionProvider.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/AuthorizationTestPermissionDefinitionProvider.cs index 28cacd4be0..3cf8d0eaf7 100644 --- a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/AuthorizationTestPermissionDefinitionProvider.cs +++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/TestServices/AuthorizationTestPermissionDefinitionProvider.cs @@ -14,8 +14,12 @@ public class AuthorizationTestPermissionDefinitionProvider : PermissionDefinitio } var group = context.AddGroup("TestGroup"); + + group[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName].ShouldBe(typeof(AuthorizationTestPermissionDefinitionProvider).FullName); - group.AddPermission("MyAuthorizedService1"); + var permission1 = group.AddPermission("MyAuthorizedService1"); + + permission1[PermissionDefinitionContext.KnownPropertyNames.CurrentProviderName].ShouldBe(typeof(AuthorizationTestPermissionDefinitionProvider).FullName); group.AddPermission("MyPermission1").StateCheckers.Add(new TestRequireEditionPermissionSimpleStateChecker()); group.AddPermission("MyPermission2"); From d342435ccc04dfbed9af8c6e9dc404adfbf2a18d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 13 Jun 2025 13:59:23 +0300 Subject: [PATCH 4/4] Update StaticPermissionDefinitionStore.cs --- .../Permissions/StaticPermissionDefinitionStore.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/StaticPermissionDefinitionStore.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/StaticPermissionDefinitionStore.cs index 4570f94edc..4e6ff0d11c 100644 --- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/StaticPermissionDefinitionStore.cs +++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/StaticPermissionDefinitionStore.cs @@ -99,6 +99,8 @@ public class StaticPermissionDefinitionStore : IStaticPermissionDefinitionStore, context.CurrentProvider = provider; provider.PostDefine(context); } + + context.CurrentProvider = null; return context.Groups; }