public ActionResult ChangePassword(ChangePasswordModel p) { var isAvaliable = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault().isAvaliable; if (isAvaliable == true) { var userID = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault().UserID; User toBeUpdated = db.Users.Find(userID); User updated = new User(); updated = toBeUpdated; updated.Password = p.user.Password; db.Entry(toBeUpdated).CurrentValues.SetValues(updated); db.SaveChanges(); var value = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault(); PassReset isAvaliabletoFalse = new PassReset(); isAvaliabletoFalse = value; isAvaliabletoFalse.isAvaliable = false; db.Entry(value).CurrentValues.SetValues(isAvaliabletoFalse); db.SaveChanges(); ViewBag.Message = "Your password has been successfully updated."; return View(); } else ViewBag.Message = "Authentication code is already used."; return View(); }
public ActionResult ForgotPassword(User s) { var u = db.Users.Where(x => x.EMail == s.EMail).FirstOrDefault(); if (u == null) { ModelState.AddModelError("", "Such user cannot be found."); return(View()); } else { PassReset p = new PassReset(); p.AutID = Guid.NewGuid().ToString(); p.isAvaliable = true; p.EMail = u.EMail; p.UserID = u.UserID; db.PassResets.Add(p); db.SaveChanges(); GMailer.GmailUsername = "******"; GMailer.GmailPassword = "******"; GMailer mailer = new GMailer(); mailer.ToEmail = u.EMail; mailer.Subject = "Password Reset"; mailer.Body = "A request to reset your password has been sent. <br> Please enter the code below to Change Password page to Change your Password. <br> <a href='localhost.com/Account/ChangePassword'>verify</a> Authentication Code :" + p.AutID; mailer.IsHtml = true; mailer.Send(); ViewBag.Message = "A confirmation mail has been sent to you."; // return RedirectToAction("Index", "Home"); } return(View()); }
public IActionResult PasswordReset([FromBody] PassReset passReset) { var context = this.services.GetService(typeof(HGTDbContext)) as HGTDbContext; var foundUser = context.HGTUsers.FirstOrDefault(x => x.Email.Equals(passReset.Email, StringComparison.InvariantCultureIgnoreCase)); if (foundUser == null) { return(Ok(new ServiceResponse { Status = "error", Message = "User not found!" })); } if (foundUser.VerificationCode != passReset.Code) { return(Ok(new ServiceResponse { Status = "error", Message = "Wrong Code" })); } foundUser.VerificationCode = "Not available"; foundUser.LastPassowrdResetTime = DateTime.Now; var hasher = new PasswordHasher <HGTUser>(); var hashedPassword = hasher.HashPassword(foundUser, passReset.Password); foundUser.PasswordHash = hashedPassword; context.SaveChanges(); return(Ok(new ServiceResponse { Status = "good", Message = "Password Reset Successful" })); }
public IActionResult PasswordResetEmail([FromBody] PassReset passReset) { var context = this.services.GetService(typeof(HGTDbContext)) as HGTDbContext; var foundUser = context.HGTUsers.FirstOrDefault(x => x.Email.Equals(passReset.Email, StringComparison.InvariantCultureIgnoreCase)); if (foundUser == null) { return(Ok(new ServiceResponse { Status = "error", Message = "User not found!" })); } var rand = new Random(); if (DateTime.Now - foundUser.LastPassowrdResetTime < TimeSpan.FromHours(5)) { return(Ok(new ServiceResponse { Status = "error", Message = "You Have to wait 5 hours before requesting new password reset code since your last request" })); } if (foundUser.VerificationCode != "Not available") { return(Ok(new ServiceResponse { Status = "error", Message = "Code Already sent to your email." })); } foundUser.VerificationCode = rand.Next(1000, 9999).ToString(); if (this.emailSender.SendMail(passReset.Email, "Code To Reset Your Password", $"The code to reset your password is {foundUser.VerificationCode}")) { context.SaveChanges(); return(Ok(new ServiceResponse { Status = "good", Message = "We have mailed you code to reset your password" })); } foundUser.VerificationCode = "Not available"; return(Ok(new ServiceResponse { Status = "error", Message = "Error in sending mail" })); }
public ActionResult ChangePassword(ChangePasswordModel p) { var isAvaliable = db.PassResets.First().isAvaliable; try { isAvaliable = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault().isAvaliable; } catch (Exception ex) { ViewBag.Message = "There is no such authentication code."; Console.WriteLine(ex.Message); return(View()); } if (isAvaliable == true) { var userID = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault().UserID; User toBeUpdated = db.Users.Find(userID); User updated = new User(); updated = toBeUpdated; updated.Password = p.user.Password; db.Entry(toBeUpdated).CurrentValues.SetValues(updated); db.SaveChanges(); var value = db.PassResets.Where(x => x.AutID == p.passReset.AutID).FirstOrDefault(); PassReset isAvaliabletoFalse = new PassReset(); isAvaliabletoFalse = value; isAvaliabletoFalse.isAvaliable = false; db.Entry(value).CurrentValues.SetValues(isAvaliabletoFalse); db.SaveChanges(); ViewBag.Message = "Your password has been successfully updated."; return(View()); } else { ViewBag.Message = "Authentication code is already used."; } return(View()); }
public ActionResult ForgotPassword(User s) { var u = db.Users.Where(x => x.EMail == s.EMail).FirstOrDefault(); if (u == null) { ViewBag.Message = "Such user cannot be found."; return View(); } else { if (ModelState.IsValid) { PassReset p = new PassReset(); p.AutID = Guid.NewGuid().ToString(); p.isAvaliable = true; p.EMail = u.EMail; p.UserID = u.UserID; db.PassResets.Add(p); db.SaveChanges(); GMailer.GmailUsername = "******"; GMailer.GmailPassword = "******"; GMailer mailer = new GMailer(); mailer.ToEmail = u.EMail; mailer.Subject = "Password Reset"; mailer.Body = "A request to reset your password has been sent. <br> Please enter the code below to Change Password page to Change your Password. <br> <a href='localhost.com/Account/ChangePassword'>verify</a> Authentication Code :" + p.AutID; mailer.IsHtml = true; mailer.Send(); ViewBag.Message = "A confirmation mail has been sent to you."; // return RedirectToAction("Index", "Home"); } } return View(); }