mirror of https://github.com/abpframework/abp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.9 KiB
67 lines
2.9 KiB
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Identity;
|
|
using Volo.Abp.Authorization.Permissions;
|
|
using Volo.Abp.DependencyInjection;
|
|
using Volo.Abp.Guids;
|
|
using Volo.Abp.PermissionManagement;
|
|
using Volo.Abp.Threading;
|
|
|
|
namespace Volo.Abp.Identity
|
|
{
|
|
public class TestPermissionDataBuilder : ITransientDependency
|
|
{
|
|
private readonly IGuidGenerator _guidGenerator;
|
|
private readonly IIdentityUserRepository _userRepository;
|
|
private readonly IPermissionGrantRepository _permissionGrantRepository;
|
|
private readonly ILookupNormalizer _lookupNormalizer;
|
|
|
|
public TestPermissionDataBuilder(
|
|
IGuidGenerator guidGenerator,
|
|
IIdentityUserRepository userRepository,
|
|
IPermissionGrantRepository permissionGrantRepository,
|
|
ILookupNormalizer lookupNormalizer)
|
|
{
|
|
_guidGenerator = guidGenerator;
|
|
_userRepository = userRepository;
|
|
_permissionGrantRepository = permissionGrantRepository;
|
|
_lookupNormalizer = lookupNormalizer;
|
|
}
|
|
|
|
public async Task Build()
|
|
{
|
|
await AddRolePermissions().ConfigureAwait(false);
|
|
await AddUserPermissions().ConfigureAwait(false);
|
|
}
|
|
|
|
private async Task AddRolePermissions()
|
|
{
|
|
await AddPermission(TestPermissionNames.MyPermission1, RolePermissionValueProvider.ProviderName, "admin").ConfigureAwait(false);
|
|
await AddPermission(TestPermissionNames.MyPermission2, RolePermissionValueProvider.ProviderName, "admin").ConfigureAwait(false);
|
|
await AddPermission(TestPermissionNames.MyPermission2_ChildPermission1, RolePermissionValueProvider.ProviderName, "admin").ConfigureAwait(false);
|
|
|
|
await AddPermission(TestPermissionNames.MyPermission1, RolePermissionValueProvider.ProviderName, "moderator").ConfigureAwait(false);
|
|
await AddPermission(TestPermissionNames.MyPermission2, RolePermissionValueProvider.ProviderName, "moderator").ConfigureAwait(false);
|
|
|
|
await AddPermission(TestPermissionNames.MyPermission1, RolePermissionValueProvider.ProviderName, "supporter").ConfigureAwait(false);
|
|
}
|
|
|
|
private async Task AddUserPermissions()
|
|
{
|
|
var david = AsyncHelper.RunSync(() => _userRepository.FindByNormalizedUserNameAsync(_lookupNormalizer.NormalizeName("david")));
|
|
await AddPermission(TestPermissionNames.MyPermission1, UserPermissionValueProvider.ProviderName, david.Id.ToString()).ConfigureAwait(false);
|
|
}
|
|
|
|
private async Task AddPermission(string permissionName, string providerName, string providerKey)
|
|
{
|
|
await _permissionGrantRepository.InsertAsync(
|
|
new PermissionGrant(
|
|
_guidGenerator.Create(),
|
|
permissionName,
|
|
providerName,
|
|
providerKey
|
|
)
|
|
).ConfigureAwait(false);
|
|
}
|
|
}
|
|
}
|