예제 #1
0
 /// <summary>
 /// Create a <see cref="AbacAuthorizationPolicy"/> using a specified grammar.
 /// </summary>
 /// <param name="policy">The policy.</param>
 /// <param name="grammar">The grammar to be used.</param>
 /// <returns>A <see cref="AbacAuthorizationPolicy"/> created.</returns>
 public static AbacAuthorizationPolicy CreateFromGrammar(string policy, AllowedGrammars grammar = AllowedGrammars.Bal)
 {
     try
     {
         return(DSLParser.Parse(policy, grammar));
     }
     catch (Exception exception)
     {
         throw new InvalidOperationException($"Policy can't be parsed using the  grammar {Enum.GetName(typeof(AllowedGrammars), grammar)} and policy is not created succcesfully.", exception);
     }
 }
예제 #2
0
        public static AbacAuthorizationPolicy Parse(string policy, AllowedGrammars grammar)
        {
            foreach (var parser in _parsers)
            {
                if (parser.CanParse(grammar))
                {
                    return(parser.Parse(policy));
                }
            }

            throw new InvalidOperationException($"The grammar {Enum.GetName(typeof(AllowedGrammars), grammar)} does not contain any parser registered.");
        }
예제 #3
0
 public bool CanParse(AllowedGrammars grammar)
 {
     return(grammar == AllowedGrammars.Bal);
 }