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(); } }
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)) }); } }