Browse Source

serialize permissions to records.

pull/13644/head
Halil İbrahim Kalkan 4 years ago
parent
commit
b162fd4ff8
  1. 31
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStore.cs
  2. 14
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IPermissionDefinitionSerializer.cs
  3. 19
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionDefinitionSerializer.cs
  4. 16
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/StaticPermissionSaver.cs

31
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStore.cs

@ -31,41 +31,16 @@ public class DynamicPermissionDefinitionStore : IDynamicPermissionDefinitionStor
return null;
}
return await PermissionDefinitionSerializer.DeserializeAsync(permissionRecord);
throw new NotImplementedException();
}
public virtual async Task<IReadOnlyList<PermissionDefinition>> GetPermissionsAsync()
{
var permissionRecords = await PermissionRepository.GetListAsync();
if (permissionRecords.Count == 0)
{
return Array.Empty<PermissionDefinition>();
}
var permissionDefinitions = new PermissionDefinition[permissionRecords.Count];
for (var i = 0; i < permissionRecords.Count; i++)
{
permissionDefinitions[i] = await PermissionDefinitionSerializer.DeserializeAsync(permissionRecords[i]);
}
return permissionDefinitions;
throw new NotImplementedException();
}
public virtual async Task<IReadOnlyList<PermissionGroupDefinition>> GetGroupsAsync()
{
var permissionGroupRecords = await PermissionGroupRepository.GetListAsync();
if (permissionGroupRecords.Count == 0)
{
return Array.Empty<PermissionGroupDefinition>();
}
var permissionGroupDefinitions = new PermissionGroupDefinition[permissionGroupRecords.Count];
for (var i = 0; i < permissionGroupRecords.Count; i++)
{
permissionGroupDefinitions[i] =
await PermissionDefinitionSerializer.DeserializeAsync(permissionGroupRecords[i]);
}
return permissionGroupDefinitions;
throw new NotImplementedException();
}
}

14
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IPermissionDefinitionSerializer.cs

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using JetBrains.Annotations;
using Volo.Abp.Authorization.Permissions;
@ -6,16 +7,13 @@ namespace Volo.Abp.PermissionManagement;
public interface IPermissionDefinitionSerializer
{
public Task<PermissionDefinitionRecord> SerializeAsync(
Task<PermissionDefinitionRecord> SerializeAsync(
PermissionDefinition permission,
[CanBeNull] PermissionGroupDefinition permissionGroup);
public Task<PermissionDefinition> DeserializeAsync(
PermissionDefinitionRecord permissionRecord);
public Task<PermissionGroupDefinitionRecord> SerializeAsync(
Task<PermissionGroupDefinitionRecord> SerializeAsync(
PermissionGroupDefinition permissionGroup);
public Task<PermissionGroupDefinition> DeserializeAsync(
PermissionGroupDefinitionRecord permissionGroupRecord);
Task<(List<PermissionGroupDefinitionRecord>, List<PermissionDefinitionRecord>)>
SerializeAsync(IEnumerable<PermissionGroupDefinition> permissionGroups);
}

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

@ -81,6 +81,25 @@ public class PermissionDefinitionSerializer : IPermissionDefinitionSerializer, I
}
}
public async Task<(List<PermissionGroupDefinitionRecord>, List<PermissionDefinitionRecord>)>
SerializeAsync(IEnumerable<PermissionGroupDefinition> permissionGroups)
{
var permissionGroupRecords = new List<PermissionGroupDefinitionRecord>();
var permissionRecords = new List<PermissionDefinitionRecord>();
foreach (var permissionGroup in permissionGroups)
{
permissionGroupRecords.Add(await SerializeAsync(permissionGroup));
foreach (var permission in permissionGroup.GetPermissionsWithChildren())
{
permissionRecords.Add(await SerializeAsync(permission, permissionGroup));
}
}
return (permissionGroupRecords, permissionRecords);
}
public Task<PermissionGroupDefinition> DeserializeAsync(PermissionGroupDefinitionRecord permissionGroupRecord)
{
throw new System.NotImplementedException();

16
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/StaticPermissionSaver.cs

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.DependencyInjection;
@ -28,20 +29,17 @@ public class StaticPermissionSaver : IStaticPermissionSaver, ITransientDependenc
public virtual async Task SaveAsync()
{
// TODO: Save only changed permissions & groups
/* - get all groups
/* + get all groups & perms
* - compare and update or insert groups
* - get all permissions
* - compare and update or insert permissions
* - set in-memory cache using the latest group and permission data
*/
var (permissionGroupRecords, permissionRecords) = await PermissionSerializer.SerializeAsync(
await StaticStore.GetGroupsAsync()
);
var permissionGroups = await StaticStore.GetGroupsAsync();
foreach (var permissionGroup in permissionGroups)
{
foreach (var permission in permissionGroup.GetPermissionsWithChildren())
{
}
}
}
}
Loading…
Cancel
Save