public IConditionResult GetConditions(ISecurityItem securityItem) { ConditionResult conditionResult = (ConditionResult) OnlySelfGetConditions(securityItem); foreach (ISecurityIdentity parent in _securityIdentity.Parents) { ISecurityIdentityAuthorizer securityIdentityAuthorizer = _securityIdentityAuthorizerFactory.CreateCache(parent); IConditionResult parentConditions = securityIdentityAuthorizer.GetConditions(securityItem); MergeConditionResult(conditionResult,parentConditions); } return conditionResult; }
public static IEnumerable <IAccessCondition> GetAllConditions(this IConditionResult conditionResult) { return(conditionResult.Conditions.Values.SelectMany(c => c)); }
private void MergeConditionResult(ConditionResult conditionResult, IConditionResult mergeFromConditionResult) { foreach (var pair in mergeFromConditionResult.Conditions) ((Dictionary<IConditionalAuthorization, IEnumerable<IAccessCondition>>)conditionResult.Conditions).Add(pair.Key,pair.Value); }