public async Task <bool> Can <TRequest>() where TRequest : new() { var request = new TRequest(); var result = await _rules.Evaluate(request, FeatureInfo.For(request)); return(result.IsAuthorized); }
public async Task <TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate <TResponse> next) { var featureInfo = new FeatureInfo(typeof(TRequest)); if (featureInfo.Implements <IMiruJob>()) { return(await next()); } var result = await _rules.Evaluate(request, featureInfo); if (result.IsAuthorized) { return(await next()); } throw new UnauthorizedException(result.FailureMessage); }