Browse Source

fix: apply Providers, StateCheckers and ExtraProperties to resource permissions in FillAsync

pull/25017/head
maliming 4 weeks ago
parent
commit
2c15a6088e
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 41
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStoreInMemoryCache.cs

41
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();

Loading…
Cancel
Save