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());
        }
Example #2
0
        public virtual LoginResponse Execute(LoginRequest request)
        {
            var user = _emailQueryObject.Execute(request.EmailAddress);

            if (user == null)
            {
                return new LoginResponse {
                           ResponseMessage = "User Not Logged In"
                }
            }
            ;

            BCryptPasswordHash pwHash = new BCryptPasswordHash();
            var result = pwHash.VerifyPassword(request.Password, user.PasswordHash);

            if (result)
            {
                return new LoginResponse {
                           ResponseMessage = "User Logged In"
                }
            }
            ;

            //TODO:Log login failures
            //TODO:Log login success
            //TODO:Generate and return JWT

            return(new LoginResponse {
                ResponseMessage = "User Not Logged In"
            });
        }
    }
Example #3
0
        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 }));
                }
            }
        }
Example #5
0
        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);
        }