blob: acd66a62e63b694a3d8704b7fbc6d1a21a6b325a [file] [log] [blame]
using System.Threading.Tasks;
using Casbin.Model;
using Casbin.UnitTests.Extensions;
namespace Casbin.UnitTests.ParallelTest
{
public class DefaultRbacConsumer<TRequest> : IConsumer<TRequest> where TRequest : IRequestValues
{
private Enforcer _enforcer;
public DefaultRbacConsumer(Enforcer enforcer)
{
_enforcer = enforcer;
}
public DefaultRbacConsumer(string modelPath, string policyPath)
{
if (!string.IsNullOrEmpty(modelPath) && !string.IsNullOrEmpty(policyPath))
{
_enforcer = new Enforcer(modelPath, policyPath);
}
else
{
_enforcer = new Enforcer();
}
_enforcer.BuildRoleLinks();
}
public async Task<bool> GetAccessAsync(TRequest request)
{
return await _enforcer.EnforceAsync(_enforcer.CreateContext(), request);
}
public Task<bool> UpdatePolicyAsync(TRequest oldRequest, TRequest newRequest) =>
// TODO
Task.FromResult(true);
public async Task<bool> RemovePolicyAsync(TRequest request)
{
return await _enforcer.RemovePolicyAsync(request.ToEnumerable());
}
public async Task<bool> AddPolicyAsync(TRequest request)
{
return await _enforcer.AddPolicyAsync(request.ToEnumerable());
}
}
}