From b162fd4ff86be7555e6347ea45bbdbbb2e77ea43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 15 Aug 2022 16:22:54 +0300 Subject: [PATCH] serialize permissions to records. --- .../DynamicPermissionDefinitionStore.cs | 31 ++----------------- .../IPermissionDefinitionSerializer.cs | 14 ++++----- .../PermissionDefinitionSerializer.cs | 19 ++++++++++++ .../StaticPermissionSaver.cs | 16 +++++----- 4 files changed, 35 insertions(+), 45 deletions(-) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStore.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStore.cs index b8e995de9d..966fca75ae 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/DynamicPermissionDefinitionStore.cs +++ b/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> GetPermissionsAsync() { - var permissionRecords = await PermissionRepository.GetListAsync(); - if (permissionRecords.Count == 0) - { - return Array.Empty(); - } - - 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> GetGroupsAsync() { - var permissionGroupRecords = await PermissionGroupRepository.GetListAsync(); - if (permissionGroupRecords.Count == 0) - { - return Array.Empty(); - } - - 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(); } } \ No newline at end of file diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IPermissionDefinitionSerializer.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IPermissionDefinitionSerializer.cs index 152d37f9b9..799896a5d8 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IPermissionDefinitionSerializer.cs +++ b/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 SerializeAsync( + Task SerializeAsync( PermissionDefinition permission, [CanBeNull] PermissionGroupDefinition permissionGroup); - - public Task DeserializeAsync( - PermissionDefinitionRecord permissionRecord); - - public Task SerializeAsync( + + Task SerializeAsync( PermissionGroupDefinition permissionGroup); - public Task DeserializeAsync( - PermissionGroupDefinitionRecord permissionGroupRecord); + Task<(List, List)> + SerializeAsync(IEnumerable permissionGroups); } \ No newline at end of file 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 13276be20b..bccfd65a7a 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 @@ -81,6 +81,25 @@ public class PermissionDefinitionSerializer : IPermissionDefinitionSerializer, I } } + public async Task<(List, List)> + SerializeAsync(IEnumerable permissionGroups) + { + var permissionGroupRecords = new List(); + var permissionRecords = new List(); + + 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 DeserializeAsync(PermissionGroupDefinitionRecord permissionGroupRecord) { throw new System.NotImplementedException(); diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/StaticPermissionSaver.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/StaticPermissionSaver.cs index 34f8752253..c3b1e85866 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/StaticPermissionSaver.cs +++ b/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()) - { - - } - } } } \ No newline at end of file