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); }
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); }
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); } } }
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); } } }
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); } }