diff --git a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/RolePermissionManagementProvider.cs b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/RolePermissionManagementProvider.cs index 17d30c6845..b74071f04a 100644 --- a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/RolePermissionManagementProvider.cs +++ b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/RolePermissionManagementProvider.cs @@ -7,7 +7,9 @@ namespace Volo.Abp.Identity { public class RolePermissionManagementProvider : PermissionManagementProvider { - public override string Name => "Role"; + public const string ProviderName = "Role"; + + public override string Name => ProviderName; private readonly IIdentityUserRepository _identityUserRepository; @@ -39,8 +41,8 @@ namespace Volo.Abp.Identity foreach (var roleName in roleNames) { - var pg = await PermissionGrantRepository.FindAsync(name, providerName, roleName); - if (pg != null) + var permissionGrant = await PermissionGrantRepository.FindAsync(name, providerName, roleName); + if (permissionGrant != null) { return new PermissionValueProviderGrantInfo(true, roleName); } diff --git a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserPermissionManagementProvider.cs b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserPermissionManagementProvider.cs index 5aa3eac7e5..b62602b838 100644 --- a/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserPermissionManagementProvider.cs +++ b/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserPermissionManagementProvider.cs @@ -1,33 +1,22 @@ -using System.Threading.Tasks; -using Volo.Abp.Guids; +using Volo.Abp.Guids; using Volo.Abp.Permissions; namespace Volo.Abp.Identity { public class UserPermissionManagementProvider : PermissionManagementProvider { - public override string Name => "User"; + public const string ProviderName = "User"; //TODO: Share a common string with UserPermissionValueProvider (same is true for the role) + + public override string Name => ProviderName; public UserPermissionManagementProvider(IPermissionGrantRepository permissionGrantRepository, IGuidGenerator guidGenerator) : base( - permissionGrantRepository, + permissionGrantRepository, guidGenerator) { - } - - public override async Task CheckAsync(string name, string providerName, string providerKey) - { - if (providerName != Name) - { - return PermissionValueProviderGrantInfo.NonGranted; - } - return new PermissionValueProviderGrantInfo( - await PermissionGrantRepository.FindAsync(name, providerName, providerKey) != null, - providerKey - ); } } } \ No newline at end of file diff --git a/src/Volo.Abp.Identity.Domain/Volo/Abp/Permissions/RolePermissionManagerExtensions.cs b/src/Volo.Abp.Identity.Domain/Volo/Abp/Permissions/RolePermissionManagerExtensions.cs new file mode 100644 index 0000000000..60a97d2542 --- /dev/null +++ b/src/Volo.Abp.Identity.Domain/Volo/Abp/Permissions/RolePermissionManagerExtensions.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using JetBrains.Annotations; +using Volo.Abp.Identity; + +namespace Volo.Abp.Permissions +{ + public static class RolePermissionManagerExtensions + { + public static Task> GetAllForRoleAsync([NotNull] this IPermissionManager permissionManager, string roleName) + { + Check.NotNull(permissionManager, nameof(permissionManager)); + + return permissionManager.GetAllAsync(RolePermissionManagementProvider.ProviderName, roleName); + } + + public static Task SetForUserAsync([NotNull] this IPermissionManager permissionManager, Guid userId, [NotNull] string name, bool isGranted) + { + Check.NotNull(permissionManager, nameof(permissionManager)); + + return permissionManager.SetAsync(name, UserPermissionManagementProvider.ProviderName, userId.ToString(), isGranted); + } + } +} \ No newline at end of file diff --git a/src/Volo.Abp.Identity.Domain/Volo/Abp/Permissions/UserPermissionManagerExtensions.cs b/src/Volo.Abp.Identity.Domain/Volo/Abp/Permissions/UserPermissionManagerExtensions.cs index 8bd2fa730f..3e916b6f67 100644 --- a/src/Volo.Abp.Identity.Domain/Volo/Abp/Permissions/UserPermissionManagerExtensions.cs +++ b/src/Volo.Abp.Identity.Domain/Volo/Abp/Permissions/UserPermissionManagerExtensions.cs @@ -2,34 +2,24 @@ using System.Collections.Generic; using System.Threading.Tasks; using JetBrains.Annotations; +using Volo.Abp.Identity; namespace Volo.Abp.Permissions { public static class UserPermissionManagerExtensions { - private const string ProviderName = "User"; //TODO: Share same const with UserPermissionValueProvider - - public static Task IsGrantedForUserAsync(this IPermissionManager permissionManager, [NotNull] string name, Guid userId) + public static Task> GetAllForUserAsync([NotNull] this IPermissionManager permissionManager, Guid userId) { - throw new NotImplementedException(); - //return permissionManager.GetAsync(name, ProviderName, userId.ToString()); - } + Check.NotNull(permissionManager, nameof(permissionManager)); - public static Task> GetAllAsync(this IPermissionManager permissionManager, Guid userId) - { - return permissionManager.GetAllAsync(ProviderName, userId.ToString()); - } - - public static Task GrantForUserAsync(this IPermissionManager permissionManager, Guid userId, [NotNull] string name) - { - throw new NotImplementedException(); - //return permissionManager.GrantAsync(name, ProviderName, userId.ToString()); + return permissionManager.GetAllAsync(UserPermissionManagementProvider.ProviderName, userId.ToString()); } - public static Task RevokeForUserAsync(this IPermissionManager permissionManager, Guid userId, [NotNull] string name) + public static Task SetForUserAsync([NotNull] this IPermissionManager permissionManager, Guid userId, [NotNull] string name, bool isGranted) { - throw new NotImplementedException(); - //return permissionManager.RevokeAsync(name, ProviderName, userId.ToString()); + Check.NotNull(permissionManager, nameof(permissionManager)); + + return permissionManager.SetAsync(name, UserPermissionManagementProvider.ProviderName, userId.ToString(), isGranted); } } } 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 fad9a9ab64..016e8e1664 100644 --- a/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManagementProvider.cs +++ b/src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManagementProvider.cs @@ -20,7 +20,18 @@ namespace Volo.Abp.Permissions } - public abstract Task CheckAsync(string name, string providerName, string providerKey); + public virtual async Task CheckAsync(string name, string providerName, string providerKey) + { + if (providerName != Name) + { + return PermissionValueProviderGrantInfo.NonGranted; + } + + return new PermissionValueProviderGrantInfo( + await PermissionGrantRepository.FindAsync(name, providerName, providerKey) != null, + providerKey + ); + } public virtual async Task GrantAsync(string name, string providerKey) { diff --git a/src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionCheckerExtensions.cs b/src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionCheckerExtensions.cs index 86900c763e..05d5ff8501 100644 --- a/src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionCheckerExtensions.cs +++ b/src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionCheckerExtensions.cs @@ -8,5 +8,7 @@ namespace Volo.Abp.Permissions { return (await permissionChecker.CheckAsync(name)).IsGranted; } + + //TODO: Add sync extensions } } diff --git a/src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionManagerSyncExtensions.cs b/src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionManagerSyncExtensions.cs deleted file mode 100644 index 08a8b1698d..0000000000 --- a/src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionManagerSyncExtensions.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Volo.Abp.Permissions -{ - public static class PermissionManagerSyncExtensions - { - //TODO: Add sync extension methods for all permission manager methods. - //TODO: Also add sync extension methods for all value provider extensions. - } -} diff --git a/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/AbpIdentityApplicationTestModule.cs b/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/AbpIdentityApplicationTestModule.cs index d560cd69b4..34a28327f2 100644 --- a/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/AbpIdentityApplicationTestModule.cs +++ b/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/AbpIdentityApplicationTestModule.cs @@ -9,7 +9,10 @@ using Volo.Abp.Uow; namespace Volo.Abp.Identity { - [DependsOn(typeof(AbpIdentityApplicationModule), typeof(AbpIdentityEntityFrameworkCoreModule), typeof(AbpAutofacModule))] + [DependsOn( + typeof(AbpIdentityApplicationModule), + typeof(AbpIdentityEntityFrameworkCoreModule), + typeof(AbpAutofacModule))] public class AbpIdentityApplicationTestModule : AbpModule { public override void ConfigureServices(IServiceCollection services)