public Guid ResetPassword(Guid id, UsersResetPasswordModel model) { Customer customer = _customerRepository.Get(id); customer.AdminUser.SetPassword(model.NewPassword, expireImmediately: true); return(customer.Id); }
public ActionResult ResetPassword(Guid id, UsersResetPasswordModel model) { if (ModelState.IsValid) { _customerService.ResetPassword(id, model); } return(RedirectToAction("details", new { id = model.Id }) .AndAlert(AlertType.Success, "Customer updated.", "The Customer details were updated successfully.")); }
public HttpResponseMessage ResetPassword(UsersResetPasswordModel model) { HttpResponseMessage resp = new HttpResponseMessage(); IEnumerable <User> users = this.usersManager.GetItems() as IEnumerable <User>; User user = users.Where(u => u.Email == model.Email).FirstOrDefault(); if (user != null) { if (user.ResetCode == model.ResetCode) { string salt = PasswordHelper.CreateSalt(10); string hashedNewPassword = PasswordHelper.CreatePasswordHash(model.NewPassword, salt); user.Salt = salt; user.HashedPassword = hashedNewPassword; user.ResetCode = null; this.usersManager.UpdateItem(user); this.usersManager.SaveChanges(); resp.Content = new StringContent(JsonConvert.SerializeObject(new ChangeGeneralResponseViewModel() { IsSuccessful = true })); resp.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); } else { resp.Content = new StringContent(JsonConvert.SerializeObject(new ChangeGeneralResponseViewModel() { IsSuccessful = false, State = "incorrect_reset_code" })); resp.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); } } return(resp); }
public async Task <IActionResult> TokenAuthentication([FromBody] LoginViewModel m) { IActionResult res = null; var _b = new BaseEntityDTO <LoginViewModel>() { Start = DateTime.Now, Itens = 1 }; try { var _urp = new UsersResetPasswordModel() { Token = m.Token }; var t = await new UsersResetPasswordRepository().FindById(_urp, null); if (t == null) { throw new Exception($"Link expirado para redefinição de senha"); } var existUser = await _userManager.FindByNameAsync(t.LoginUser); if (existUser == null) { throw new Exception($"Usuário não encontrado"); } string tokenPassword = await _userManager.GeneratePasswordResetTokenAsync(existUser); await _userManager.ResetAccessFailedCountAsync(existUser); string senha = Uteis.GeraSenha(); var result = await _userManager.ResetPasswordAsync(existUser, tokenPassword, senha); if (!result.Succeeded) { throw new Exception("Houve um erro ao tentar zerar a senha"); } result = await _userManager.ChangePasswordAsync(existUser, senha, m.Password); if (!result.Succeeded) { throw new Exception(result.Errors.Select(a => a.Description).Aggregate((n, o) => $"Ocorreram os seguintes erros: {n},{o}")); } await repository.Update(new UsersResetPasswordModel[] { new UsersResetPasswordModel() { Token = m.Token, SenhaTrocada = true, LoginUser = t.LoginUser } }, 0, null); m.Username = existUser.UserName; _b.Result = await AutenticaLogin(m, existUser); _b.End = DateTime.Now; _b.Itens = 1; res = Ok(_b); } catch (Exception err) { _b.End = DateTime.Now; _b.Error = (err.InnerException ?? err).Message; res = BadRequest(_b); } return(res); }