Пример #1
0
        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);
        }
Пример #2
0
        public void AddClaimMatchAssertion(OperationDefinition operation, Grant grant, Claim claim)
        {
            var assertion = new ClaimMatchAssertion(grant, claim);

            Add(operation, assertion);
        }
Пример #3
0
 public bool TryGetAssertions(OperationDefinition operation, out ReadOnlyMemory <IAssertion> assertions)
 {
     return(_assertions.TryGetValue(operation, out assertions));
 }
Пример #4
0
        public void AddMatchAnyAssertion(OperationDefinition operation, Grant grant, params Claim[] claims)
        {
            var assertion = new MultipleClaimMatchAssertion(grant, MultipleMatchMode.Any, claims);

            Add(operation, assertion);
        }
Пример #5
0
 public Operation(OperationDefinition definition) : this(definition.Resource, definition.Action)
 {
 }