/// <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); } }
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."); }
public bool CanParse(AllowedGrammars grammar) { return(grammar == AllowedGrammars.Bal); }