// public async Task<Boolean> IsInRoleAsync(ClaimsPrincipal user, String role) { // PolicyResult policy = await EvaluateAsync(user); // return policy.Roles.Contains(role); // } // public async Task<Boolean> HasPermissionAsync(ClaimsPrincipal user, String permission) { // PolicyResult policy = await EvaluateAsync(user); // return policy.Permissions.Contains(permission); // } public async Task <PolicyResult> EvaluateAsync(Policy policy, ClaimsPrincipal user) { if (policy.Hash.IsMissing()) { policy.CalculateHash(); } if (policy.LastPolicyChangeDate == DateTime.MinValue) { policy.LastPolicyChangeDate = DateTime.Now; } PolicyResult result = await policy.EvaluateAsync(user); return(result); }
public async Task <PolicyResult> EvaluateAsync(Policy policy, ClaimsPrincipal user) { if (policy.Hash.IsMissing()) { policy.CalculateHash(); } PolicyResult policyResult = await _cache.GetAsync( $"{policy.Hash}|||{user.Identity.Name}", _options.Caching.UserPolicyServiceExpiration, () => _inner.EvaluateAsync(policy, user), _logger ); return(policyResult); }