internal void BuildIncrementalRoleLink(PolicyOperation policyOperation, IEnumerable <string> rule) { int count = Value.Count(c => c is '_'); if (count < 2) { throw new InvalidOperationException("the number of \"_\" in role definition should be at least 2."); } BuildRoleLink(count, policyOperation, rule); }
/// <summary> /// Provides incremental build the role inheritance relations. /// </summary> /// <param name="policyOperation"></param> /// <param name="section"></param> /// <param name="policyType"></param> /// <param name="rules"></param> public void BuildIncrementalRoleLinks(PolicyOperation policyOperation, string section, string policyType, IEnumerable <IEnumerable <string> > rules) { if (Model.ContainsKey(PermConstants.Section.RoleSection) is false) { return; } Assertion assertion = GetExistAssertion(section, policyType); assertion.BuildIncrementalRoleLinks(policyOperation, rules); }
internal void BuildIncrementalRoleLinks(IRoleManager roleManager, PolicyOperation policyOperation, IEnumerable <IEnumerable <string> > rules) { RoleManager = roleManager; int count = Value.Count(c => c is '_'); if (count < 2) { throw new InvalidOperationException("the number of \"_\" in role definition should be at least 2."); } foreach (var rule in rules) { BuildRoleLink(roleManager, count, policyOperation, rule); } }
public void BuildIncrementalRoleLink(IRoleManager roleManager, PolicyOperation policyOperation, string section, string policyType, IEnumerable <string> rule) { BuildIncrementalRoleLink(policyOperation, section, policyType, rule); }
private static void BuildRoleLink(IRoleManager roleManager, int groupPolicyCount, PolicyOperation policyOperation, IEnumerable <string> rule) { List <string> ruleEnum = rule as List <string> ?? rule.ToList(); int ruleCount = ruleEnum.Count; if (ruleCount < groupPolicyCount) { throw new InvalidOperationException("Grouping policy elements do not meet role definition."); } if (ruleCount > groupPolicyCount) { ruleEnum = ruleEnum.GetRange(0, groupPolicyCount); } switch (policyOperation) { case PolicyOperation.PolicyAdd: switch (groupPolicyCount) { case 2: roleManager.AddLink(ruleEnum[0], ruleEnum[1]); break; case 3: roleManager.AddLink(ruleEnum[0], ruleEnum[1], ruleEnum[2]); break; case 4: roleManager.AddLink(ruleEnum[0], ruleEnum[1], ruleEnum[2], ruleEnum[3]); break; default: roleManager.AddLink(ruleEnum[0], ruleEnum[1], ruleEnum.GetRange(2, groupPolicyCount - 2).ToArray()); break; } break; case PolicyOperation.PolicyRemove: switch (groupPolicyCount) { case 2: roleManager.DeleteLink(ruleEnum[0], ruleEnum[1]); break; case 3: roleManager.DeleteLink(ruleEnum[0], ruleEnum[1], ruleEnum[2]); break; case 4: roleManager.DeleteLink(ruleEnum[0], ruleEnum[1], ruleEnum[2], ruleEnum[3]); break; default: roleManager.DeleteLink(ruleEnum[0], ruleEnum[1], ruleEnum.GetRange(2, groupPolicyCount - 2).ToArray()); break; } break; default: throw new ArgumentOutOfRangeException(nameof(policyOperation), policyOperation, null); } }