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 185d1c6fee..3b09c922dc 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 @@ -19,14 +19,19 @@ public class DynamicPermissionDefinitionStoreInMemoryCache : protected IDictionary PermissionGroupDefinitions { get; } protected IDictionary PermissionDefinitions { get; } protected ISimpleStateCheckerSerializer StateCheckerSerializer { get; } + protected ILocalizableStringSerializer LocalizableStringSerializer { get; } public SemaphoreSlim SyncSemaphore { get; } = new(1, 1); public DateTime? LastCheckTime { get; set; } - public DynamicPermissionDefinitionStoreInMemoryCache(ISimpleStateCheckerSerializer stateCheckerSerializer) + public DynamicPermissionDefinitionStoreInMemoryCache( + ISimpleStateCheckerSerializer stateCheckerSerializer, + ILocalizableStringSerializer localizableStringSerializer) { StateCheckerSerializer = stateCheckerSerializer; + LocalizableStringSerializer = localizableStringSerializer; + PermissionGroupDefinitions = new Dictionary(); PermissionDefinitions = new Dictionary(); } @@ -44,7 +49,7 @@ public class DynamicPermissionDefinitionStoreInMemoryCache : { var permissionGroup = context.AddGroup( permissionGroupRecord.Name, - new FixedLocalizableString(permissionGroupRecord.DisplayName) //TODO: Consider localization + LocalizableStringSerializer.Deserialize(permissionGroupRecord.DisplayName) ); PermissionGroupDefinitions[permissionGroup.Name] = permissionGroup; @@ -87,7 +92,7 @@ public class DynamicPermissionDefinitionStoreInMemoryCache : { var permission = permissionContainer.AddPermission( permissionRecord.Name, - new FixedLocalizableString(permissionRecord.DisplayName), + LocalizableStringSerializer.Deserialize(permissionRecord.DisplayName), permissionRecord.MultiTenancySide, permissionRecord.IsEnabled ); diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer.cs index 49104c85b6..8e63342502 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer.cs @@ -2,7 +2,6 @@ using System.Globalization; using System.Linq; using System.Threading.Tasks; -using Microsoft.Extensions.Localization; using Volo.Abp.Authorization.Permissions; using Volo.Abp.Data; using Volo.Abp.DependencyInjection; @@ -16,16 +15,16 @@ public class PermissionDefinitionSerializer : IPermissionDefinitionSerializer, I { protected ISimpleStateCheckerSerializer StateCheckerSerializer { get; } protected IGuidGenerator GuidGenerator { get; } - protected IStringLocalizerFactory StringLocalizerFactory { get; } + protected ILocalizableStringSerializer LocalizableStringSerializer { get; } public PermissionDefinitionSerializer( IGuidGenerator guidGenerator, - IStringLocalizerFactory stringLocalizerFactory, - ISimpleStateCheckerSerializer stateCheckerSerializer) + ISimpleStateCheckerSerializer stateCheckerSerializer, + ILocalizableStringSerializer localizableStringSerializer) { StateCheckerSerializer = stateCheckerSerializer; + LocalizableStringSerializer = localizableStringSerializer; GuidGenerator = guidGenerator; - StringLocalizerFactory = stringLocalizerFactory; } public async Task<(PermissionGroupDefinitionRecord[], PermissionDefinitionRecord[])> @@ -54,7 +53,7 @@ public class PermissionDefinitionSerializer : IPermissionDefinitionSerializer, I var permissionGroupRecord = new PermissionGroupDefinitionRecord( GuidGenerator.Create(), permissionGroup.Name, - permissionGroup.DisplayName.Localize(StringLocalizerFactory) + LocalizableStringSerializer.Serialize(permissionGroup.DisplayName) ); foreach (var property in permissionGroup.Properties) @@ -77,7 +76,7 @@ public class PermissionDefinitionSerializer : IPermissionDefinitionSerializer, I permissionGroup?.Name, permission.Name, permission.Parent?.Name, - permission.DisplayName.Localize(StringLocalizerFactory), + LocalizableStringSerializer.Serialize(permission.DisplayName), permission.IsEnabled, permission.MultiTenancySide, SerializeProviders(permission.Providers), diff --git a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs index eed7a3435a..1e7c04580c 100644 --- a/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs +++ b/modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs @@ -8,6 +8,7 @@ using Volo.Abp.Features; using Volo.Abp.GlobalFeatures; using Volo.Abp.Localization; using Volo.Abp.MultiTenancy; +using Volo.Abp.PermissionManagement.Localization; using Xunit; namespace Volo.Abp.PermissionManagement; @@ -36,7 +37,7 @@ public class PermissionDefinitionSerializer_Tests : PermissionTestBase //Assert permissionGroupRecord.Name.ShouldBe("Group1"); - permissionGroupRecord.DisplayName.ShouldBe("Group one"); + permissionGroupRecord.DisplayName.ShouldBe("F:Group one"); permissionGroupRecord.GetProperty("CustomProperty1").ShouldBe("CustomValue1"); } @@ -49,7 +50,7 @@ public class PermissionDefinitionSerializer_Tests : PermissionTestBase var group1 = CreatePermissionGroup1(context); var permission1 = group1.AddPermission( "Permission1", - new FixedLocalizableString("Permission one"), + new LocalizableString(typeof(AbpPermissionManagementResource), "Permission1"), MultiTenancySides.Tenant ) .WithProviders("ProviderA", "ProviderB") @@ -70,7 +71,7 @@ public class PermissionDefinitionSerializer_Tests : PermissionTestBase permissionRecord.Name.ShouldBe("Permission1"); permissionRecord.GroupName.ShouldBe("Group1"); - permissionRecord.DisplayName.ShouldBe("Permission one"); + permissionRecord.DisplayName.ShouldBe("L:AbpPermissionManagement,Permission1"); permissionRecord.GetProperty("CustomProperty2").ShouldBe("CustomValue2"); permissionRecord.Providers.ShouldBe("ProviderA,ProviderB"); permissionRecord.MultiTenancySide.ShouldBe(MultiTenancySides.Tenant);