From e5e25c5e5f9c8a1e7f8d644599f164212281b0af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 10 Nov 2025 14:01:29 +0300 Subject: [PATCH] Added GetGrantedResourceKeysAsync --- .../Resources/IResourcePermissionChecker.cs | 5 ++++ .../ResourcePermissionCheckerExtensions.cs | 16 +++++++++++++ ...tityResourcePermissionCheckerExtensions.cs | 24 ++++++++++++++++++- 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/IResourcePermissionChecker.cs b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/IResourcePermissionChecker.cs index 0bf3b23389..383e49c527 100644 --- a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/IResourcePermissionChecker.cs +++ b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/IResourcePermissionChecker.cs @@ -20,4 +20,9 @@ public interface IResourcePermissionChecker string resourceName, string resourceKey ); + + Task GetGrantedResourceKeysAsync( + string resourceName, + string permissionName + ); } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/ResourcePermissionCheckerExtensions.cs b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/ResourcePermissionCheckerExtensions.cs index c294b7d75c..bd54ef5eee 100644 --- a/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/ResourcePermissionCheckerExtensions.cs +++ b/framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/ResourcePermissionCheckerExtensions.cs @@ -55,4 +55,20 @@ public static class ResourcePermissionCheckerExtensions resourceKey.ToString()! ); } + + public static Task GetGrantedResourceKeysAsync( + this IResourcePermissionChecker resourcePermissionChecker, + TResource resource, + string permissionName + ) + { + Check.NotNull(resourcePermissionChecker, nameof(resourcePermissionChecker)); + Check.NotNull(resource, nameof(resource)); + Check.NotNullOrWhiteSpace(permissionName, nameof(permissionName)); + + return resourcePermissionChecker.GetGrantedResourceKeysAsync( + typeof(TResource).FullName!, + permissionName + ); + } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Authorization/Permissions/Resources/EntityResourcePermissionCheckerExtensions.cs b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Authorization/Permissions/Resources/EntityResourcePermissionCheckerExtensions.cs index 810c6eade2..9867bb68cb 100644 --- a/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Authorization/Permissions/Resources/EntityResourcePermissionCheckerExtensions.cs +++ b/framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Authorization/Permissions/Resources/EntityResourcePermissionCheckerExtensions.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using Volo.Abp.Domain.Entities; @@ -53,4 +55,24 @@ public static class EntityResourcePermissionCheckerExtensions entity.GetKeys().JoinAsString(",") ); } + + public async static Task GetGrantedEntityIdsAsync( + this IResourcePermissionChecker resourcePermissionChecker, + string permissionName + ) + where TEntity : class, IEntity + { + Check.NotNull(resourcePermissionChecker, nameof(resourcePermissionChecker)); + Check.NotNullOrWhiteSpace(permissionName, nameof(permissionName)); + + var keys = await resourcePermissionChecker.GetGrantedResourceKeysAsync( + typeof(TEntity).FullName!, + permissionName + ); + + return keys + .Select(x => Convert.ChangeType(x, typeof(TKey))) + .Cast() + .ToArray(); + } } \ No newline at end of file