Ejemplo n.º 1
0
        public void ChangePassword(string userName, string password)
        {
            using (var unitOfWork = _unitOfWorkFactory.CreateAccountUnitOfWork())
            {
                var userStore   = CreateUserStore(unitOfWork.CurrentContext);
                var userManager = CreateUserManager(userStore);

                var user = userManager.FindByName(userName);
                var hashedNewPassword = userManager.PasswordHasher.HashPassword(password);

                userStore.SetPasswordHashAsync(user, hashedNewPassword)
                .ContinueWith((t) => userStore.UpdateAsync(user)).Wait();
            }
        }
Ejemplo n.º 2
0
        private ComparisonResult <UserProfile> CompareUsers()
        {
            using (var unitOfWork = _unitOfWorkFactory.CreateAccountUnitOfWork())
            {
                var dbUsers     = unitOfWork.UserProfileRepository.GetWindowsUsers().ToArray();
                var dbUserNames = dbUsers.Select(x => x.UserName).ToArray();

                var adminGroup     = _groupMapper.AdminMapping.Group;
                var administrators = _activeDirectoryReposity.GetUsersInGroup(adminGroup.Name, adminGroup.DomainName);

                var analystGroup = _groupMapper.AnalystMaping.Group;
                var analysts     = _activeDirectoryReposity.GetUsersInGroup(analystGroup.Name, analystGroup.DomainName);

                var activeDirectoryUsers     = administrators.Union(analysts, new ActiveDirectoryUserDistinctEqualityComparer()).ToArray();
                var activeDirectoryUserNames = activeDirectoryUsers.Select(x => x.DomainName + "\\" + x.UserName).ToArray();



                return(new ComparisonResult <UserProfile>()
                {
                    NewObjects = activeDirectoryUsers.Where(x => !dbUserNames.Contains(x.DomainName + "\\" + x.UserName))
                                 .Select(x =>
                    {
                        var user = ActiveDirectoryToDbUser(x);
                        if (administrators.Any(y => y.DomainName == x.DomainName && y.UserName == x.UserName))
                        {
                            user.Roll = UserRoleEnum.Admin;
                        }
                        else if (analysts.Any(y => y.DomainName == x.DomainName && y.UserName == x.UserName))
                        {
                            user.Roll = UserRoleEnum.Analyst;
                        }
                        else
                        {
                            throw new UnauthorizedAccessException();
                        }

                        return user;
                    }).ToArray(),
                    DeletedObjects = dbUsers.Where(x => !activeDirectoryUserNames.Contains(x.UserName))
                });
            }
        }