Browse Source

Improvements on permissions

pull/208/head
Halil İbrahim Kalkan 9 years ago
parent
commit
4f1e692757
  1. 8
      src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/RolePermissionManagementProvider.cs
  2. 21
      src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserPermissionManagementProvider.cs
  3. 25
      src/Volo.Abp.Identity.Domain/Volo/Abp/Permissions/RolePermissionManagerExtensions.cs
  4. 26
      src/Volo.Abp.Identity.Domain/Volo/Abp/Permissions/UserPermissionManagerExtensions.cs
  5. 13
      src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManagementProvider.cs
  6. 2
      src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionCheckerExtensions.cs
  7. 8
      src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionManagerSyncExtensions.cs
  8. 5
      test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/AbpIdentityApplicationTestModule.cs

8
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);
}

21
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<PermissionValueProviderGrantInfo> CheckAsync(string name, string providerName, string providerKey)
{
if (providerName != Name)
{
return PermissionValueProviderGrantInfo.NonGranted;
}
return new PermissionValueProviderGrantInfo(
await PermissionGrantRepository.FindAsync(name, providerName, providerKey) != null,
providerKey
);
}
}
}

25
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<List<PermissionWithGrantedProviders>> 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);
}
}
}

26
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<bool> IsGrantedForUserAsync(this IPermissionManager permissionManager, [NotNull] string name, Guid userId)
public static Task<List<PermissionWithGrantedProviders>> 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<List<PermissionWithGrantedProviders>> 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);
}
}
}

13
src/Volo.Abp.Permissions.Domain/Volo/Abp/Permissions/PermissionManagementProvider.cs

@ -20,7 +20,18 @@ namespace Volo.Abp.Permissions
}
public abstract Task<PermissionValueProviderGrantInfo> CheckAsync(string name, string providerName, string providerKey);
public virtual async Task<PermissionValueProviderGrantInfo> 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)
{

2
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
}
}

8
src/Volo.Abp.Permissions/Volo/Abp/Permissions/PermissionManagerSyncExtensions.cs

@ -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.
}
}

5
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)

Loading…
Cancel
Save