Browse Source

Use ILocalizableStringSerializer while saving/getting permissions

pull/13644/head
Halil İbrahim Kalkan 4 years ago
parent
commit
eb145d2198
  1. 11
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStoreInMemoryCache.cs
  2. 13
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer.cs
  3. 7
      modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer_Tests.cs

11
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStoreInMemoryCache.cs

@ -19,14 +19,19 @@ public class DynamicPermissionDefinitionStoreInMemoryCache :
protected IDictionary<string, PermissionGroupDefinition> PermissionGroupDefinitions { get; } protected IDictionary<string, PermissionGroupDefinition> PermissionGroupDefinitions { get; }
protected IDictionary<string, PermissionDefinition> PermissionDefinitions { get; } protected IDictionary<string, PermissionDefinition> PermissionDefinitions { get; }
protected ISimpleStateCheckerSerializer StateCheckerSerializer { get; } protected ISimpleStateCheckerSerializer StateCheckerSerializer { get; }
protected ILocalizableStringSerializer LocalizableStringSerializer { get; }
public SemaphoreSlim SyncSemaphore { get; } = new(1, 1); public SemaphoreSlim SyncSemaphore { get; } = new(1, 1);
public DateTime? LastCheckTime { get; set; } public DateTime? LastCheckTime { get; set; }
public DynamicPermissionDefinitionStoreInMemoryCache(ISimpleStateCheckerSerializer stateCheckerSerializer) public DynamicPermissionDefinitionStoreInMemoryCache(
ISimpleStateCheckerSerializer stateCheckerSerializer,
ILocalizableStringSerializer localizableStringSerializer)
{ {
StateCheckerSerializer = stateCheckerSerializer; StateCheckerSerializer = stateCheckerSerializer;
LocalizableStringSerializer = localizableStringSerializer;
PermissionGroupDefinitions = new Dictionary<string, PermissionGroupDefinition>(); PermissionGroupDefinitions = new Dictionary<string, PermissionGroupDefinition>();
PermissionDefinitions = new Dictionary<string, PermissionDefinition>(); PermissionDefinitions = new Dictionary<string, PermissionDefinition>();
} }
@ -44,7 +49,7 @@ public class DynamicPermissionDefinitionStoreInMemoryCache :
{ {
var permissionGroup = context.AddGroup( var permissionGroup = context.AddGroup(
permissionGroupRecord.Name, permissionGroupRecord.Name,
new FixedLocalizableString(permissionGroupRecord.DisplayName) //TODO: Consider localization LocalizableStringSerializer.Deserialize(permissionGroupRecord.DisplayName)
); );
PermissionGroupDefinitions[permissionGroup.Name] = permissionGroup; PermissionGroupDefinitions[permissionGroup.Name] = permissionGroup;
@ -87,7 +92,7 @@ public class DynamicPermissionDefinitionStoreInMemoryCache :
{ {
var permission = permissionContainer.AddPermission( var permission = permissionContainer.AddPermission(
permissionRecord.Name, permissionRecord.Name,
new FixedLocalizableString(permissionRecord.DisplayName), LocalizableStringSerializer.Deserialize(permissionRecord.DisplayName),
permissionRecord.MultiTenancySide, permissionRecord.MultiTenancySide,
permissionRecord.IsEnabled permissionRecord.IsEnabled
); );

13
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer.cs

@ -2,7 +2,6 @@
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Extensions.Localization;
using Volo.Abp.Authorization.Permissions; using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Data; using Volo.Abp.Data;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
@ -16,16 +15,16 @@ public class PermissionDefinitionSerializer : IPermissionDefinitionSerializer, I
{ {
protected ISimpleStateCheckerSerializer StateCheckerSerializer { get; } protected ISimpleStateCheckerSerializer StateCheckerSerializer { get; }
protected IGuidGenerator GuidGenerator { get; } protected IGuidGenerator GuidGenerator { get; }
protected IStringLocalizerFactory StringLocalizerFactory { get; } protected ILocalizableStringSerializer LocalizableStringSerializer { get; }
public PermissionDefinitionSerializer( public PermissionDefinitionSerializer(
IGuidGenerator guidGenerator, IGuidGenerator guidGenerator,
IStringLocalizerFactory stringLocalizerFactory, ISimpleStateCheckerSerializer stateCheckerSerializer,
ISimpleStateCheckerSerializer stateCheckerSerializer) ILocalizableStringSerializer localizableStringSerializer)
{ {
StateCheckerSerializer = stateCheckerSerializer; StateCheckerSerializer = stateCheckerSerializer;
LocalizableStringSerializer = localizableStringSerializer;
GuidGenerator = guidGenerator; GuidGenerator = guidGenerator;
StringLocalizerFactory = stringLocalizerFactory;
} }
public async Task<(PermissionGroupDefinitionRecord[], PermissionDefinitionRecord[])> public async Task<(PermissionGroupDefinitionRecord[], PermissionDefinitionRecord[])>
@ -54,7 +53,7 @@ public class PermissionDefinitionSerializer : IPermissionDefinitionSerializer, I
var permissionGroupRecord = new PermissionGroupDefinitionRecord( var permissionGroupRecord = new PermissionGroupDefinitionRecord(
GuidGenerator.Create(), GuidGenerator.Create(),
permissionGroup.Name, permissionGroup.Name,
permissionGroup.DisplayName.Localize(StringLocalizerFactory) LocalizableStringSerializer.Serialize(permissionGroup.DisplayName)
); );
foreach (var property in permissionGroup.Properties) foreach (var property in permissionGroup.Properties)
@ -77,7 +76,7 @@ public class PermissionDefinitionSerializer : IPermissionDefinitionSerializer, I
permissionGroup?.Name, permissionGroup?.Name,
permission.Name, permission.Name,
permission.Parent?.Name, permission.Parent?.Name,
permission.DisplayName.Localize(StringLocalizerFactory), LocalizableStringSerializer.Serialize(permission.DisplayName),
permission.IsEnabled, permission.IsEnabled,
permission.MultiTenancySide, permission.MultiTenancySide,
SerializeProviders(permission.Providers), SerializeProviders(permission.Providers),

7
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.GlobalFeatures;
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
using Volo.Abp.PermissionManagement.Localization;
using Xunit; using Xunit;
namespace Volo.Abp.PermissionManagement; namespace Volo.Abp.PermissionManagement;
@ -36,7 +37,7 @@ public class PermissionDefinitionSerializer_Tests : PermissionTestBase
//Assert //Assert
permissionGroupRecord.Name.ShouldBe("Group1"); permissionGroupRecord.Name.ShouldBe("Group1");
permissionGroupRecord.DisplayName.ShouldBe("Group one"); permissionGroupRecord.DisplayName.ShouldBe("F:Group one");
permissionGroupRecord.GetProperty("CustomProperty1").ShouldBe("CustomValue1"); permissionGroupRecord.GetProperty("CustomProperty1").ShouldBe("CustomValue1");
} }
@ -49,7 +50,7 @@ public class PermissionDefinitionSerializer_Tests : PermissionTestBase
var group1 = CreatePermissionGroup1(context); var group1 = CreatePermissionGroup1(context);
var permission1 = group1.AddPermission( var permission1 = group1.AddPermission(
"Permission1", "Permission1",
new FixedLocalizableString("Permission one"), new LocalizableString(typeof(AbpPermissionManagementResource), "Permission1"),
MultiTenancySides.Tenant MultiTenancySides.Tenant
) )
.WithProviders("ProviderA", "ProviderB") .WithProviders("ProviderA", "ProviderB")
@ -70,7 +71,7 @@ public class PermissionDefinitionSerializer_Tests : PermissionTestBase
permissionRecord.Name.ShouldBe("Permission1"); permissionRecord.Name.ShouldBe("Permission1");
permissionRecord.GroupName.ShouldBe("Group1"); permissionRecord.GroupName.ShouldBe("Group1");
permissionRecord.DisplayName.ShouldBe("Permission one"); permissionRecord.DisplayName.ShouldBe("L:AbpPermissionManagement,Permission1");
permissionRecord.GetProperty("CustomProperty2").ShouldBe("CustomValue2"); permissionRecord.GetProperty("CustomProperty2").ShouldBe("CustomValue2");
permissionRecord.Providers.ShouldBe("ProviderA,ProviderB"); permissionRecord.Providers.ShouldBe("ProviderA,ProviderB");
permissionRecord.MultiTenancySide.ShouldBe(MultiTenancySides.Tenant); permissionRecord.MultiTenancySide.ShouldBe(MultiTenancySides.Tenant);

Loading…
Cancel
Save