diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionGrantCacheItem.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionGrantCacheItem.cs index e4d3f1648e..49013954a2 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionGrantCacheItem.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionGrantCacheItem.cs @@ -5,8 +5,6 @@ namespace Volo.Abp.PermissionManagement [Serializable] public class PermissionGrantCacheItem { - public string Name { get; set; } //TODO: Consider to remove this - public bool IsGranted { get; set; } public PermissionGrantCacheItem() @@ -14,9 +12,8 @@ namespace Volo.Abp.PermissionManagement } - public PermissionGrantCacheItem(string name, bool isGranted) + public PermissionGrantCacheItem(bool isGranted) { - Name = name; IsGranted = isGranted; } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionStore.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionStore.cs index e5438846eb..bdfdc38881 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionStore.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionStore.cs @@ -54,7 +54,7 @@ namespace Volo.Abp.PermissionManagement Logger.LogDebug($"Not found in the cache: {cacheKey}"); - cacheItem = new PermissionGrantCacheItem(name, false); + cacheItem = new PermissionGrantCacheItem(false); await SetCacheItemsAsync(providerName, providerKey, name, cacheItem); @@ -71,19 +71,21 @@ namespace Volo.Abp.PermissionManagement Logger.LogDebug($"Getting all granted permissions from the repository for this provider name,key: {providerName},{providerKey}"); - var permissionGrants = await PermissionGrantRepository.GetListAsync(providerName, providerKey); + var grantedPermissionsHashSet = new HashSet( + (await PermissionGrantRepository.GetListAsync(providerName, providerKey)).Select(p => p.Name) + ); Logger.LogDebug($"Setting the cache items. Count: {permissions.Count}"); var cacheItems = new List>(); - + foreach (var permission in permissions) { - var isGranted = permissionGrants.Any(pg => pg.Name == permission.Name); //TODO: Optimize? Dictionary/Hash + var isGranted = grantedPermissionsHashSet.Contains(permission.Name); cacheItems.Add(new KeyValuePair( CalculateCacheKey(permission.Name, providerName, providerKey), - new PermissionGrantCacheItem(permission.Name, isGranted)) + new PermissionGrantCacheItem(isGranted)) ); if (permission.Name == currentName)