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.
26 lines
927 B
26 lines
927 B
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Volo.Abp.Authorization.Permissions;
|
|
using Volo.Abp.Security.Claims;
|
|
|
|
namespace Volo.Abp.PermissionManagement
|
|
{
|
|
public class TestRequireRolePermissionStateProvider : IPermissionStateProvider
|
|
{
|
|
private readonly List<string> _allowRoles = new List<string>();
|
|
|
|
public TestRequireRolePermissionStateProvider(params string[] roles)
|
|
{
|
|
_allowRoles.AddRange(roles);
|
|
}
|
|
|
|
public Task<bool> IsEnabledAsync(PermissionStateContext context)
|
|
{
|
|
var currentPrincipalAccessor = context.ServiceProvider.GetRequiredService<ICurrentPrincipalAccessor>();
|
|
return Task.FromResult(currentPrincipalAccessor.Principal != null && _allowRoles.Any(role => currentPrincipalAccessor.Principal.IsInRole(role)));
|
|
}
|
|
}
|
|
}
|