public async Task <IActionResult> SignUp([Bind("TeamName, Password, CompetitionID")] Team team) { if (ModelState.IsValid) { //BCryptPasswordHash bCryptPasswordHash = new BCryptPasswordHash(); var salt = BCryptPasswordHash.GetRandomSalt(); var hashPassword = BCryptPasswordHash.HashPassword(team.Password, salt); team.Password = hashPassword; team.Salt = salt; _context.Add(team); //get userId //var userId = this.User.FindFirst(ClaimTypes.NameIdentifier).Value; //Migrating to new way to get user object var user = await _userManager.GetUserAsync(HttpContext.User); TeamUser teamUser = new TeamUser(); teamUser.UserId = user.Id; teamUser.UserName = user.UserName; teamUser.TeamId = team.TeamID; _context.Add(teamUser); await _context.SaveChangesAsync(); return(RedirectToAction("Index", "Competitions")); } ViewData["CompetitionID"] = team.CompetitionID; return(View()); }
public void CanHashAndVerifyPassword() { var passwordHashUtility = new BCryptPasswordHash(); var hashed = passwordHashUtility.HashPassword("password"); Assert.True(passwordHashUtility.VerifyPassword("password", hashed)); }
public async Task <IActionResult> Join([Bind("TeamID, Password, CompetitionID")] Team team) { if (team.TeamID == 0) { @ViewData["Show"] = true; return(RedirectToAction("Join", "Competitions", new { id = team.CompetitionID, check = 3 })); } var localvarTeam = await _context.Teams .Include(t => t.TeamUsers) .FirstOrDefaultAsync(m => m.TeamID == team.TeamID); var competition = await _context.Competitions // .Include(c => c.Teams) // .ThenInclude(t => t.TeamUsers) .FirstOrDefaultAsync(m => m.ID == localvarTeam.CompetitionID); if (localvarTeam.TeamUsers.Count() >= competition.MaxUsers) { @ViewData["Show"] = true; return(RedirectToAction("Join", "Competitions", new { id = team.CompetitionID, check = 1 })); //Change error message } else { var ProvidedPasswordhash = BCryptPasswordHash.HashPassword(team.Password, localvarTeam.Salt); if (localvarTeam.Password.Equals(ProvidedPasswordhash)) //if (BCryptPasswordHash.ValidatePassword(ProvidedPasswordhash, (localvarTeam.Password))) { //if (ModelState.IsValid) //{ //get userId //var userId = this.User.FindFirst(ClaimTypes.NameIdentifier).Value; //Migrate to get user object var user = await _userManager.GetUserAsync(HttpContext.User); TeamUser teamUser = new TeamUser(); teamUser.UserId = user.Id; teamUser.UserName = user.UserName; teamUser.TeamId = team.TeamID; _context.Add(teamUser); await _context.SaveChangesAsync(); //} return(RedirectToAction("Index", "Competitions")); } else { @ViewData["Show"] = true; return(RedirectToAction("Join", "Competitions", new { id = team.CompetitionID, check = 2 })); } } }
public void Execute_PasswordNotVerified_UserNotLoggedIn() { BCryptPasswordHash pwh = new BCryptPasswordHash(); var hashedPassword = pwh.HashPassword("AReallyStringPassword"); var emailQuery = new Mock <FindUserQueryByEmail>(); emailQuery.Setup(x => x.Execute(_emailAddress)).Returns(new User { EmailAddress = _emailAddress, PasswordHash = hashedPassword }); var interactor = new LoginUserInteractor(emailQuery.Object); var result = interactor.Execute(new LoginRequest { EmailAddress = _emailAddress, Password = "******" }); Assert.Equal("User Not Logged In", result.ResponseMessage); }