public void AddUserIntoGroups(UserInfo user, LDAPSupportSettings settings) { if (user == null || !settings.GroupMembership || DomainGroups == null) { return; } var domainUser = FindDomainUser(user.Sid); if (domainUser == null) { return; } var dn = ADDomain.GetUserAttribute(domainUser, settings.UserAttribute); foreach (var domainGroup in DomainGroups) { var members = ADDomain.GetGroupAttribute(domainGroup, settings.GroupAttribute); if (members != null) { if (members.Value != null) { foreach (var member in members) { var memberString = member.ToString(); if (IsUser(memberString)) { if (dn.Equals(memberString, StringComparison.InvariantCultureIgnoreCase)) { var group = CoreContext.GroupManager.GetGroupInfoBySid(domainGroup.Sid.Value); if (group != Core.Users.Constants.LostGroupInfo) { CoreContext.UserManager.AddUserIntoGroup(user.ID, group.ID); } } } else if (!_cache.Exists(memberString, domainGroup.Sid.Value) && IsGroup(memberString)) { _cache.Add(memberString, domainGroup.Sid.Value); } } } } } if (_primaryGroup != null) { var primaryGroup = CoreContext.GroupManager.GetGroupInfoBySid(_primaryGroup.Sid); if (primaryGroup != Core.Users.Constants.LostGroupInfo) { CoreContext.UserManager.AddUserIntoGroup(user.ID, primaryGroup.ID); } } }
private bool IsUserExistsInGroup(LDAPUser domainUser, LDAPSupportSettings settings) { if (!settings.GroupMembership || DomainGroups == null || DomainGroups.Count == 0 || _primaryGroup != null) { return(true); } var dn = ADDomain.GetUserAttribute(domainUser, settings.UserAttribute); foreach (var domainGroup in DomainGroups) { if (ADDomain.UserExistsInGroup(domainGroup, dn, settings.GroupAttribute)) { return(true); } } return(false); }