public void Add(OperationDefinition operation, IAssertion assertion) { if (_sealed) { throw new InvalidOperationException("policy has been sealed and no further changes can be made"); } if (!_assertions.TryGetValue(operation, out var assertions)) { _assertions[operation] = assertions = new List <IAssertion>(); } var insertAt = assertions.BinarySearch(assertion, AssertionComparer.Instance); if (insertAt >= 0) { throw new InvalidOperationException("Assertion already exists"); } assertions.Insert(~insertAt, assertion); }
public void AddClaimMatchAssertion(OperationDefinition operation, Grant grant, Claim claim) { var assertion = new ClaimMatchAssertion(grant, claim); Add(operation, assertion); }
public bool TryGetAssertions(OperationDefinition operation, out ReadOnlyMemory <IAssertion> assertions) { return(_assertions.TryGetValue(operation, out assertions)); }
public void AddMatchAnyAssertion(OperationDefinition operation, Grant grant, params Claim[] claims) { var assertion = new MultipleClaimMatchAssertion(grant, MultipleMatchMode.Any, claims); Add(operation, assertion); }
public Operation(OperationDefinition definition) : this(definition.Resource, definition.Action) { }