public IActionResult ForgotPassword(ForgotPasswordModel forgotPasswordModel) { UserDAO userDAO = new UserDAO(_connection); User user = userDAO.FindUserByEmail(forgotPasswordModel.Email); if (ModelState.IsValid) { if (user != null) { var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes(_secret); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Email, user.Email.ToString()) }), Expires = DateTime.UtcNow.AddMinutes(10), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var tokenString = tokenHandler.WriteToken(token); auxResetToken = tokenString; PasswordOperations.NewPasswordRequest(forgotPasswordModel.Email, tokenString); auxEmail = forgotPasswordModel.Email; return(Ok(new SuccessMessageModel("Email enviado com sucesso!"))); } } return(BadRequest(new ErrorMessageModel("Email não encontrado!"))); }
public void CanUserRecoverPasswordTest() { IMateDAO <Mate> MateDAO = new MateDAO(_connection); Mate testMate = new Mate(); testMate.FirstName = "Samuel"; testMate.LastName = "Cunha"; testMate.UserName = "******"; testMate.Password = "******"; testMate.Email = "*****@*****.**"; testMate.Description = "Quero recuperar a pass"; testMate.Address = "Aparecida"; testMate.Categories = new[] { Categories.GARDENING }; testMate.Rank = Ranks.MATE; testMate.Range = 10; Mate returned = MateDAO.Create(testMate); var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes("RQj!O9+Sq|D8XjYa|}kgnk|}ZaQUso)EMF48Fx1~0n~^~%]n|O{NqH(&5RqXbx7"); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Email, testMate.Email.ToString()) }), Expires = DateTime.UtcNow.AddMinutes(10), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var tokenString = tokenHandler.WriteToken(token); String auxResetToken = tokenString; PasswordOperations.NewPasswordRequest("*****@*****.**", auxResetToken); LoginDAO loginDAO = new LoginDAO(_connection); RecoverPasswordModel recoverPassword = new RecoverPasswordModel(); recoverPassword.Email = "*****@*****.**"; recoverPassword.Password = "******"; recoverPassword.ConfirmPassword = "******"; recoverPassword.Token = tokenString; Assert.True(loginDAO.RecoverPassword(recoverPassword, returned.Email)); _fixture.Dispose(); }