示例#1
0
        private Privileges JoinPrivileges(Privileges privilege1, Privileges privilege2)
        {
            var newPriv      = privilege1.ToDictionary(x => x.Key, x => x.Value.ToDictionary(y => y.Key, y => y.Value));
            var intersection = privilege1.Keys.Intersect(privilege2.Keys);

            foreach (var logicalName in intersection)
            {
                var a1      = privilege1[logicalName];
                var a2      = privilege2[logicalName];
                var aJoined = JoinAccess(a1, a2);
                newPriv.Remove(logicalName);
                newPriv.Add(logicalName, aJoined);
            }
            foreach (var logicalName in privilege2.Keys.Except(intersection))
            {
                newPriv.Add(logicalName, privilege2[logicalName]);
            }
            return(newPriv);
        }
 public SecurityService()
 {
     _objectProvidersByKind = new Lazy <ILookup <SecurityObjectKind, ISecurityObjectProvider <TDomain> > >(() =>
                                                                                                           ObjectProviders.ToLookup(o => o.Kind));
     _allPrivileges = Lazy.Value(() => Privileges.ToDictionary(p => p.SID));
 }