Browse Source

Added GetGrantedResourceKeysAsync

pull/24374/head
Halil İbrahim Kalkan 11 months ago
parent
commit
e5e25c5e5f
  1. 5
      framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/IResourcePermissionChecker.cs
  2. 16
      framework/src/Volo.Abp.Authorization.Abstractions/Volo/Abp/Authorization/Permissions/Resources/ResourcePermissionCheckerExtensions.cs
  3. 24
      framework/src/Volo.Abp.Ddd.Domain/Volo/Abp/Authorization/Permissions/Resources/EntityResourcePermissionCheckerExtensions.cs

5
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<string[]> GetGrantedResourceKeysAsync(
string resourceName,
string permissionName
);
}

16
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<string[]> GetGrantedResourceKeysAsync<TResource>(
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
);
}
}

24
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<TKey[]> GetGrantedEntityIdsAsync<TEntity, TKey>(
this IResourcePermissionChecker resourcePermissionChecker,
string permissionName
)
where TEntity : class, IEntity<TKey>
{
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<TKey>()
.ToArray();
}
}
Loading…
Cancel
Save