Ejemplo n.º 1
0
        /// <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)));
            }
        }
Ejemplo n.º 2
0
        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)));
            }
        }
Ejemplo n.º 3
0
        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()));
        }
Ejemplo n.º 4
0
        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()));
        }
Ejemplo n.º 5
0
 /// <summary>
 ///     Gets the user principals.
 /// </summary>
 /// <param name="principalSearchResult">
 ///     The principal search
 ///     result.
 /// </param>
 /// <returns>IEnumerable&lt;UserPrincipal&gt;.</returns>
 /// TODO Edit XML Comment Template for GetUserPrincipals
 public static IEnumerable <UserPrincipal> GetUserPrincipals(
     this PrincipalSearchResult <Principal> principalSearchResult)
 {
     return(principalSearchResult.OfType <UserPrincipal>());
 }