From 1ec8ebfbbb429936c81bb606365ccdb35fc297a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 23 Feb 2018 15:57:28 +0300 Subject: [PATCH] Add SetAsync to IPermissionManagementProvider and remove GrantAsync and RevokeAsync. --- .../IPermissionManagementProvider.cs | 6 +---- .../PermissionManagementProvider.cs | 23 ++++++++++++------- .../Volo/Abp/Permissions/PermissionManager.cs | 9 +------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/IPermissionManagementProvider.cs b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/IPermissionManagementProvider.cs index 8c8a2d9d24..6dca1385d9 100644 --- a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/IPermissionManagementProvider.cs +++ b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/IPermissionManagementProvider.cs @@ -11,10 +11,6 @@ namespace Volo.Abp.Permissions Task CheckAsync([NotNull] string name, [NotNull] string providerName, [NotNull] string providerKey); - //TODO: Instead of GrantAsync/RevokeAsync add SetAsync - - Task GrantAsync([NotNull] string name, [NotNull] string providerKey); - - Task RevokeAsync([NotNull] string name, [NotNull] string providerKey); + Task SetAsync([NotNull] string name, [NotNull] string providerKey, bool isGranted); } } \ No newline at end of file diff --git a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManagementProvider.cs b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManagementProvider.cs index 04d50f2a7d..1e7ec327a1 100644 --- a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManagementProvider.cs +++ b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManagementProvider.cs @@ -16,7 +16,7 @@ namespace Volo.Abp.Permissions protected ICurrentTenant CurrentTenant { get; } protected PermissionManagementProvider( - IPermissionGrantRepository permissionGrantRepository, + IPermissionGrantRepository permissionGrantRepository, IGuidGenerator guidGenerator, ICurrentTenant currentTenant) { @@ -39,10 +39,17 @@ namespace Volo.Abp.Permissions ); } - public virtual async Task GrantAsync(string name, string providerKey) + public virtual Task SetAsync(string name, string providerKey, bool isGranted) { - var grant = await PermissionGrantRepository.FindAsync(name, Name, providerKey); - if (grant != null) + return isGranted + ? GrantAsync(name, providerKey) + : RevokeAsync(name, providerKey); + } + + protected virtual async Task GrantAsync(string name, string providerKey) + { + var permissionGrant = await PermissionGrantRepository.FindAsync(name, Name, providerKey); + if (permissionGrant != null) { return; } @@ -58,15 +65,15 @@ namespace Volo.Abp.Permissions ); } - public virtual async Task RevokeAsync(string name, string providerKey) + protected virtual async Task RevokeAsync(string name, string providerKey) { - var grant = await PermissionGrantRepository.FindAsync(name, Name, providerKey); - if (grant == null) + var permissionGrant = await PermissionGrantRepository.FindAsync(name, Name, providerKey); + if (permissionGrant == null) { return; } - await PermissionGrantRepository.DeleteAsync(grant); + await PermissionGrantRepository.DeleteAsync(permissionGrant); } } } \ No newline at end of file diff --git a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManager.cs b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManager.cs index 682ee0c540..514d2bd364 100644 --- a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManager.cs +++ b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManager.cs @@ -76,14 +76,7 @@ namespace Volo.Abp.Permissions throw new AbpException("Unknown permission management provider: " + providerName); } - if (currentGrantInfo.IsGranted == false) - { - await provider.GrantAsync(permissionName, providerKey); - } - else - { - await provider.RevokeAsync(permissionName, providerKey); - } + await provider.SetAsync(permissionName, providerKey, isGranted); } public async Task GetInternalAsync(PermissionDefinition permissionDefinition, string providerName, string providerKey)