public ActionResult ChangePassword(PasswordChanger pwdToChange) { if (ModelState.IsValid) { string userName = HttpContext.User.Identity.Name.ToString().Substring(2); Person target = libRepo.LibrarianRepo.ListWhere(librarian => librarian.UserName == userName).SingleOrDefault(); if (target == null) target = libRepo.MemberRepo.ListWhere(member => member.UserName == userName).SingleOrDefault(); if (Crypto.VerifyHashedPassword(target.Password, pwdToChange.oldPassword)) { if (pwdToChange.isEqualPassword()) { target.Password = Crypto.HashPassword(pwdToChange.newPassword); if (target.Identify().StartsWith("Librarian")) libRepo.LibrarianRepo.Update((Librarian)target); else libRepo.MemberRepo.Update((Member)target); libRepo.Save(); TempData["SuccessNoti"] = "Change password successfully."; return RedirectToAction("Index"); } else { TempData["ErrorNoti"] = "New password and confirm password is not match."; return View(); } } else { TempData["ErrorNoti"] = "Your current password information is incorrect."; return View(); } } return View(); }
public ActionResult ResetPassword(string userName,PasswordChanger pwdToChange) { ModelState.Remove("oldPassword"); TempData["UserName"] = userName; TempData["Token"] = pwdToChange.oldPassword; if (ModelState.IsValid) { Person userToRecover = libRepo.MemberRepo.ListWhere(target => target.Password == pwdToChange.oldPassword && target.UserName == userName).SingleOrDefault(); if(userToRecover == null) userToRecover = libRepo.LibrarianRepo.ListWhere(target => target.Password == pwdToChange.oldPassword && target.UserName == userName).SingleOrDefault(); if (userToRecover == null) { TempData["ErrorNoti"] = "Oops! Something went wrong."; return RedirectToAction("Login"); } if (pwdToChange.isEqualPassword()) { try { userToRecover.Password = Crypto.HashPassword(pwdToChange.newPassword); if (userToRecover.Identify().StartsWith("Member")) { libRepo.MemberRepo.Update((Member)userToRecover); } else libRepo.LibrarianRepo.Update((Librarian)userToRecover); libRepo.Save(); TempData["SuccessNoti"] = "Reset password successfully."; return RedirectToAction("Login"); } catch (Exception) { TempData["ErrorNoti"] = "Oops! Something went wrong."; return RedirectToAction("Login"); } } else { TempData["ErrorNoti"] = "Password did not match."; return View(); } } else { TempData["ErrorNoti"] = "Please fill in the blank of password and comfirm password."; return View(); } }