コード例 #1
0
        internal void DeleteSecurityGroup(SecurityContext context, int groupId)
        {
            // delete from Groups
            if (Groups.TryGetValue(groupId, out var group))
            {
                // getting support lists
                var allUsers   = Flattener.GetAllUserIds(group);
                var allParents = Flattener.GetAllParentGroupIdsInclusive(group);

                // remove references
                foreach (var g in group.Groups)
                {
                    g.ParentGroups.Remove(group);
                }
                foreach (var g in group.ParentGroups)
                {
                    g.Groups.Remove(group);
                }
                Groups.Remove(groupId);

                // refresh flattening with support lists
                Flattener.DeleteGroup(group, allUsers, allParents, Groups, Membership);
            }

            // delete ACEs & empty ACLs
            EntityManager.RemoveIdentityRelatedAces(groupId);
        }
コード例 #2
0
        internal void DeleteSecurityGroup(SecurityContext context, int groupId)
        {
            // delete from Groups
            SecurityGroup group;

            if (this.Groups.TryGetValue(groupId, out group))
            {
                // getting support lists
                var allUsers   = Flattener.GetAllUserIds(group);
                var allParents = Flattener.GetAllParentGroupIdsInclusive(group);

                // remove references
                foreach (var g in group.Groups)
                {
                    g.ParentGroups.Remove(group);
                }
                foreach (var g in group.ParentGroups)
                {
                    g.Groups.Remove(group);
                }
                this.Groups.Remove(groupId);

                // refresh flattening with support lists
                Flattener.DeleteGroup(group, allUsers, allParents, this.Groups, this.Membership);
            }

            // delete Aces & emtpy Acls
            SecurityEntity.RemoveIdentityRelatedAces(context, groupId);
        }
コード例 #3
0
        internal void RemoveMembers(int groupId, IEnumerable <int> groupIds, IEnumerable <int> userIds, IEnumerable <int> parentGroupIds)
        {
            SecurityGroup group;

            if (!this.Groups.TryGetValue(groupId, out group))
            {
                return;
            }


            if (userIds != null)
            {
                foreach (var userId in userIds)
                {
                    group.UserMemberIds.Remove(userId);
                    Flattener.RemoveUserFromGroup(userId, group, this.Membership, this.Groups);
                }
            }


            // support list for refreshing flattened membership
            List <int> allUsers;
            List <int> allParents;

            if (groupIds != null)
            {
                var memberGroups = group.Groups.Where(x => groupIds.Contains(x.Id)).ToArray();
                foreach (var memberGroup in memberGroups)
                {
                    allUsers   = Flattener.GetAllUserIds(memberGroup);
                    allParents = Flattener.GetAllParentGroupIdsInclusive(memberGroup);

                    memberGroup.ParentGroups.Remove(group);
                    group.Groups.Remove(memberGroup);

                    // refresh flattening
                    Flattener.DeleteGroup(memberGroup, allUsers, allParents, this.Groups, this.Membership);
                }
            }
            if (parentGroupIds != null)
            {
                var parentGroups = group.ParentGroups.Where(x => parentGroupIds.Contains(x.Id)).ToArray();
                foreach (var parentGroup in parentGroups)
                {
                    allUsers   = Flattener.GetAllUserIds(parentGroup);
                    allParents = Flattener.GetAllParentGroupIdsInclusive(parentGroup);

                    parentGroup.Groups.Remove(group);
                    group.ParentGroups.Remove(parentGroup);

                    // refresh flattening
                    Flattener.DeleteGroup(parentGroup, allUsers, allParents, this.Groups, this.Membership);
                }
            }
        }
コード例 #4
0
        internal void RemoveUserFromGroups(int userId, IEnumerable <int> parentGroupIds)
        {
            if (parentGroupIds == null)
            {
                return;
            }

            foreach (var parentGroupId in parentGroupIds)
            {
                if (Groups.TryGetValue(parentGroupId, out var group))
                {
                    var allUsers   = Flattener.GetAllUserIds(group);
                    var allParents = Flattener.GetAllParentGroupIdsInclusive(group);

                    group.UserMemberIds.Remove(userId);

                    // refresh flattening
                    Flattener.DeleteGroup(group, allUsers, allParents, Groups, Membership);
                }
            }
        }
コード例 #5
0
        internal void DeleteIdentities(SecurityContext context, IEnumerable <int> identityIds)
        {
            foreach (var identityId in identityIds)
            {
                // delete from Groups
                SecurityGroup group;
                if (this.Groups.TryGetValue(identityId, out group))
                {
                    // identityId is a groupId
                    var allUsers   = Flattener.GetAllUserIds(group);
                    var allParents = Flattener.GetAllParentGroupIdsInclusive(group);

                    foreach (var g in group.Groups)
                    {
                        g.ParentGroups.Remove(group);
                    }
                    foreach (var g in group.ParentGroups)
                    {
                        g.Groups.Remove(group);
                    }
                    this.Groups.Remove(identityId);

                    // refresh flattening with support lists
                    Flattener.DeleteGroup(group, allUsers, allParents, this.Groups, this.Membership);
                }
                else
                {
                    // identityId is a userId or an unknown item
                    Flattener.DeleteUser(identityId, this.Membership);

                    foreach (var grp in this.Groups.Values)
                    {
                        grp.UserMemberIds.Remove(identityId);
                    }
                }

                // delete Aces & emtpy Acls
                SecurityEntity.RemoveIdentityRelatedAces(context, identityId);
            }
        }