private static bool IsInGroupsMemberOf(string memberName, AD_Group tempGroup, ref List <string> groupsChecked, out AD_Group group) { groupsChecked.Add(tempGroup.Name); var members = tempGroup.GetMembers(); foreach (AD_Member member in members) { if (string.Equals(member.Name, memberName, StringComparison.CurrentCultureIgnoreCase)) { group = tempGroup; return(true); } if (member is AD_Group) { if (groupsChecked.Contains(member.Name)) { continue; } if (IsInGroupsMemberOf(memberName, (AD_Group)member, ref groupsChecked, out group)) { return(true); } } } group = null; return(false); }
public bool IsMemberOf(string groupName, out AD_Group group) { var tempGroup = DirectoryServices.GetObject(groupName, AD_SearchScope.Subtree) as AD_Group; if (tempGroup == null) { throw new Exception(); //TODO: throw custom exception } List <string> groupsChecked = new List <string>(); return(IsInGroupsMemberOf(this.Name, tempGroup, ref groupsChecked, out group)); }