Example #1
0
        private IEnumerable<IAzManSid> getApplicationGroupSidMembers(IAzManApplication application, bool isMember, IAzManSid groupObjectSid)
        {
            var applicationGroup = (from ag in application.ApplicationGroups.Values
                                    where ag.SID.StringValue == groupObjectSid.StringValue
                                    select ag).First();

            IEnumerable<IAzManSid> result = new IAzManSid[0];

            //Store Group members
            var membersResult = from agm in applicationGroup.Members.Values
                                where agm.ApplicationGroup.ApplicationGroupId == applicationGroup.ApplicationGroupId &&
                                agm.IsMember == isMember &&
                                ((this.storage.Mode == NetSqlAzManMode.Administrator && (agm.WhereDefined == WhereDefined.LDAP || agm.WhereDefined == WhereDefined.Database)) ||
                                 (this.storage.Mode == NetSqlAzManMode.Developer && agm.WhereDefined >= WhereDefined.LDAP && agm.WhereDefined <= WhereDefined.Database))
                                select agm.SID;
            result = result.Union(membersResult);

            //BASIC GROUP
            if (applicationGroup.GroupType == GroupType.Basic)
            {
                //Sub Store Groups
                var subMembers = from agm in applicationGroup.Members.Values
                                 where agm.ApplicationGroup.ApplicationGroupId == applicationGroup.ApplicationGroupId &&
                                 agm.IsMember == isMember &&
                                 agm.WhereDefined == WhereDefined.Store
                                 select agm;

                foreach (var subMember in subMembers)
                {
                    //recursive call
                    bool nonMemberType;
                    if (isMember)
                    {
                        if (subMember.IsMember == false)
                            nonMemberType = false;
                        else
                            nonMemberType = true;
                    }
                    else
                    {
                        if (subMember.IsMember == false)
                            nonMemberType = true;
                        else
                            nonMemberType = false;
                    }
                    var subMembersResult = this.getStoreGroupSidMembers(application.Store, nonMemberType, subMember.SID);
                    result = result.Union(subMembersResult);
                }
                //Sub Application Groups
                var subMembers2 = from agm in applicationGroup.Members.Values
                                  where agm.ApplicationGroup.ApplicationGroupId == applicationGroup.ApplicationGroupId &&
                                  agm.IsMember == isMember &&
                                  agm.WhereDefined == WhereDefined.Application
                                  select agm;

                foreach (var subMember in subMembers2)
                {
                    //recursive call
                    bool nonMemberType;
                    if (isMember)
                    {
                        if (subMember.IsMember == false)
                            nonMemberType = false;
                        else
                            nonMemberType = true;
                    }
                    else
                    {
                        if (subMember.IsMember == false)
                            nonMemberType = true;
                        else
                            nonMemberType = false;
                    }
                    var subMembersResult = this.getApplicationGroupSidMembers(application, nonMemberType, subMember.SID);
                    result = result.Union(subMembersResult);
                }
                return result;
            }
            else if (applicationGroup.GroupType == GroupType.LDapQuery && isMember == true)
            {
                //LDAP Group
                return this.getCachedLDAPQueryResults(applicationGroup);
            }
            else
            {
                //Empty result
                return new IAzManSid[0];
            }
        }
Example #2
0
        private IEnumerable<IAzManSid> getStoreGroupSidMembers(IAzManStore store, bool isMember, IAzManSid groupObjectSid)
        {
            IEnumerable<IAzManSid> result = new IAzManSid[0];
            var storeGroup = (from sg in store.StoreGroups.Values
                              where sg.SID.StringValue == groupObjectSid.StringValue
                              select sg).First();

            //BASIC GROUP
            if (storeGroup.GroupType == GroupType.Basic)
            {
                //Windows SIDs
                var membersResult = from sgm in storeGroup.Members.Values
                                    where sgm.StoreGroup.StoreGroupId == storeGroup.StoreGroupId &&
                                    sgm.IsMember == isMember &&
                                    ((this.storage.Mode == NetSqlAzManMode.Administrator && (sgm.WhereDefined == WhereDefined.LDAP || sgm.WhereDefined == WhereDefined.Database)) ||
                                     (this.storage.Mode == NetSqlAzManMode.Developer && sgm.WhereDefined >= WhereDefined.LDAP && sgm.WhereDefined <= WhereDefined.Database))
                                    select sgm.SID;
                result = result.Union(membersResult);

                //Sub Store Groups
                var subMembers = from sgm in storeGroup.Members.Values
                                 where sgm.StoreGroup.StoreGroupId == storeGroup.StoreGroupId &&
                                 sgm.IsMember == isMember &&
                                 sgm.WhereDefined == WhereDefined.Store
                                 select sgm;
                foreach (var subMember in subMembers)
                {
                    //recursive call
                    bool nonMemberType;
                    if (isMember)
                    {
                        if (subMember.IsMember == false)
                            nonMemberType = false;
                        else
                            nonMemberType = true;
                    }
                    else
                    {
                        if (subMember.IsMember == false)
                            nonMemberType = true;
                        else
                            nonMemberType = false;
                    }
                    var subMembersResult = this.getStoreGroupSidMembers(store, nonMemberType, subMember.SID);
                    result = result.Union(subMembersResult);
                }
                return result;
            }
            else if (storeGroup.GroupType == GroupType.LDapQuery && isMember == true)
            {
                return this.getCachedLDAPQueryResults(storeGroup);
            }
            else
            {
                //Empty result
                return result;
            }
        }