public IActionResult ProcessForgotPassword(ForgotCredentialsViewModel model) { if (!ModelState.IsValid) { return(View("ForgotPassword")); } var user = _db.Users.FirstOrDefault(u => u.Email == model.Email); if (user == null) { ModelState.AddModelError("Email", "That Email doesn't exist"); return(View("ForgotPassword")); } const string from = "*****@*****.**"; const string fromName = "RecipeList"; const string subject = "RecipeList Password Recovery"; var linkId = Guid.NewGuid(); var uniqueIdentifier = new UniqueIdentifiers { UserId = user.Id, UniqueId = linkId, IsVerified = false }; _db.UniqueIdentifiers.Add(uniqueIdentifier); _db.SaveChanges(); var body = "Hello " + user.DisplayName + ",<br/><br/>Click this <a href='https://myrecipelist.azurewebsites.net/account/recovery/" + user.Id + "/" + linkId + "'>link</a> to reset your password."; _emailSender.SendEmail(user.Email, user.Username, from, fromName, subject, body, true); return(RedirectToAction("CheckEmail")); }
public IActionResult ProcessRegister(RegisterInputModel model) { if (!ModelState.IsValid) { return(View("Register")); } var user = new User { Email = model.Email, Username = model.Username, Password = model.Password, DisplayName = model.DisplayName, RegisteredAt = DateTime.Now }; var bio = new UserBio { UserId = user.Id, Bio = user.DisplayName + "\'s bio" // default bio }; var dbUserName = _db.Users.SingleOrDefault(u => u.Username == user.Username); var dbUserEmail = _db.Users.SingleOrDefault(u => u.Email == user.Email); // adding custom model state errors if (dbUserName != null || dbUserEmail != null || user.Password != model.ConfirmPassword) { if (dbUserName != null) { ModelState.AddModelError("Username", "Username already exists"); } if (dbUserEmail != null) { ModelState.AddModelError("Email", "Email already exists"); } if (user.Password != model.ConfirmPassword) { ModelState.AddModelError("Password", "Passwords do not match"); } return(View("Register")); } user.Password = _passwordHasher.HashPassword(user.Password); _db.Users.Add(user); _db.UserBios.Add(bio); _db.SaveChanges(); // unique Id for email verification var uniqueIdentifier = new UniqueIdentifiers { UserId = user.Id, UniqueId = Guid.NewGuid(), IsVerified = false }; _db.UniqueIdentifiers.Add(uniqueIdentifier); _db.SaveChanges(); const string from = "*****@*****.**"; const string fromName = "RecipeList"; const string subject = "RecipeList Confirmation Email"; var body = "Click <a href='https://myrecipelist.azurewebsites.net/account/verify/" + user.Id + "/" + uniqueIdentifier.UniqueId + "'>Here</a> to confirm your email and gain access to the site!"; // var body = "Click <a href='https://localhost:5001/account/verify/" + user.Id + "/" + // uniqueIdentifier.UniqueId + "'>Here</a> to confirm your email and gain access to the site!"; _emailSender.SendEmail(user.Email, user.Username, from, fromName, subject, body, true); return(RedirectToAction("AwaitingVerification")); }