From 2c15a6088e87dc36e38907108af684ddca2c33c7 Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 4 Mar 2026 21:14:51 +0800 Subject: [PATCH] fix: apply Providers, StateCheckers and ExtraProperties to resource permissions in FillAsync --- ...cPermissionDefinitionStoreInMemoryCache.cs | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStoreInMemoryCache.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStoreInMemoryCache.cs index f1e6b683c4..abd287ec8b 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStoreInMemoryCache.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStoreInMemoryCache.cs @@ -48,20 +48,37 @@ public class DynamicPermissionDefinitionStoreInMemoryCache : var context = new PermissionDefinitionContext(null); - var resourcePermissions = permissionRecords.Where(x => !x.ResourceName.IsNullOrWhiteSpace()); - foreach (var resourcePermission in resourcePermissions) + var resourcePermissionRecords = permissionRecords.Where(x => !x.ResourceName.IsNullOrWhiteSpace()); + foreach (var resourcePermissionRecord in resourcePermissionRecords) { - context.AddResourcePermission(resourcePermission.Name, - resourcePermission.ResourceName, - resourcePermission.ManagementPermissionName, - resourcePermission.DisplayName != null ? LocalizableStringSerializer.Deserialize(resourcePermission.DisplayName) : null, - resourcePermission.MultiTenancySide, - resourcePermission.IsEnabled); - } + var resourcePermission = context.AddResourcePermission(resourcePermissionRecord.Name, + resourcePermissionRecord.ResourceName, + resourcePermissionRecord.ManagementPermissionName, + resourcePermissionRecord.DisplayName != null ? LocalizableStringSerializer.Deserialize(resourcePermissionRecord.DisplayName) : null, + resourcePermissionRecord.MultiTenancySide, + resourcePermissionRecord.IsEnabled); + + if (!resourcePermissionRecord.Providers.IsNullOrWhiteSpace()) + { + resourcePermission.Providers.AddRange(resourcePermissionRecord.Providers.Split(',')); + } - foreach (var rp in context.ResourcePermissions) - { - ResourcePermissionDefinitions.Add(rp); + if (!resourcePermissionRecord.StateCheckers.IsNullOrWhiteSpace()) + { + var checkers = StateCheckerSerializer + .DeserializeArray( + resourcePermissionRecord.StateCheckers, + resourcePermission + ); + resourcePermission.StateCheckers.AddRange(checkers); + } + + foreach (var property in resourcePermissionRecord.ExtraProperties) + { + resourcePermission[property.Key] = property.Value; + } + + ResourcePermissionDefinitions.Add(resourcePermission); } var permissions = permissionRecords.Where(x => x.ResourceName.IsNullOrWhiteSpace()).ToList();