/// <summary> /// Checks if current user is a member of the specified group. /// </summary> /// <param name="groupName">Active Directory secure group to be checked.</param> public static bool IsMemberOfAdSecurityGroup(string groupName, string domain) { PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domain); UserPrincipal user = UserPrincipal.Current; using (PrincipalSearchResult <Principal> groups = user.GetAuthorizationGroups()) { return(groups.OfType <GroupPrincipal>().Any(g => g.Name.Equals(groupName, StringComparison.OrdinalIgnoreCase))); } }
private static bool checkIfUserInGroup(string username, PrincipalContext context, string groupName) { UserPrincipal user = UserPrincipal.FindByIdentity(context, username); if (user == null) { return(false); // it will be null if the user is from another connected domain, not the main domain on the domain server } using (PrincipalSearchResult <Principal> groups = user.GetAuthorizationGroups()) { return(groups.OfType <GroupPrincipal>().Any(g => g.Name.Equals(groupName, StringComparison.OrdinalIgnoreCase))); } }
public IReadOnlyCollection <DomainUserModel> UsersFinder(string text) { ICollection <DomainUserModel> results = ActionHelper.TryGenericCatchWithLogger((contexts) => { ICollection <DomainUserModel> result; if (_cache_usersFinder.ContainsKey(text) && _cache_usersFinder.TryGetValue(text, out result)) { return(result); } List <DomainUserModel> localResults = new List <DomainUserModel>(); string searchString = string.Format("*{0}*", text); IEnumerable <UserPrincipal> partialDisplaynameResult; IEnumerable <UserPrincipal> partialUsernameResult; foreach (KeyValuePair <string, PrincipalContext> context in contexts) { if (context.Value.ContextType == ContextType.Domain) { } using (UserPrincipal searchMaskDisplayname = InitialDisplayNameSearching(context.Value, searchString)) using (UserPrincipal searchMaskUsername = InitialSamAccountNameSearching(context.Value, searchString)) using (PrincipalSearcher searcherDisplayname = new PrincipalSearcher(searchMaskDisplayname)) using (PrincipalSearcher searcherUsername = new PrincipalSearcher(searchMaskUsername)) using (PrincipalSearchResult <Principal> taskDisplayname = searcherDisplayname.FindAll()) using (PrincipalSearchResult <Principal> taskUsername = searcherUsername.FindAll()) { partialDisplaynameResult = taskDisplayname.OfType <UserPrincipal>(); partialUsernameResult = taskUsername.OfType <UserPrincipal>(); foreach (UserPrincipal item in partialDisplaynameResult .Union(partialUsernameResult.Where(x => x != null && !partialDisplaynameResult.Any(y => x.SamAccountName == y.SamAccountName)))) { using (item) { localResults.Add(_mapperUnitOfWork.Repository <IDomainUserModelMapper>().Map(item, new DomainUserModel(), context.Key)); } } } context.Value.Dispose(); } _cache_usersFinder.TryAdd(text, localResults); return(localResults); }, _logger, _parameterEnvService, LogCategories); return(new ReadOnlyCollection <DomainUserModel>(results.OrderBy(f => f.FullAccountInformation).ToList())); }
public IReadOnlyCollection <DomainGroupModel> GroupsFinder(string text) { ICollection <DomainGroupModel> results = ActionHelper.TryGenericCatchWithLogger((d, ctx) => { ICollection <DomainGroupModel> result = null; if (_cache_groupsFinder.ContainsKey(text) && _cache_groupsFinder.TryGetValue(text, out result)) { return(result); } string searchString = string.Format("*{0}*", text); using (GroupPrincipal searchMaskSamAccountName = new GroupPrincipal(ctx) { SamAccountName = searchString }) using (PrincipalSearcher searcherSamAccountName = new PrincipalSearcher(searchMaskSamAccountName)) using (PrincipalSearchResult <Principal> searchResults = searcherSamAccountName.FindAll()) { results = _mapperUnitOfWork.Repository <IDomainGroupModelMapper>().MapCollection(searchResults.OfType <GroupPrincipal>()); _cache_groupsFinder.TryAdd(text, result); return(result); } }, _logger, _parameterEnvService, LogCategories); return(new ReadOnlyCollection <DomainGroupModel>(results.OrderBy(f => f.DisplayName).ToList())); }
/// <summary> /// Gets the user principals. /// </summary> /// <param name="principalSearchResult"> /// The principal search /// result. /// </param> /// <returns>IEnumerable<UserPrincipal>.</returns> /// TODO Edit XML Comment Template for GetUserPrincipals public static IEnumerable <UserPrincipal> GetUserPrincipals( this PrincipalSearchResult <Principal> principalSearchResult) { return(principalSearchResult.OfType <UserPrincipal>()); }