public ActionResult Login(LoginViewModel model, string returnUrl) { try { if (!ModelState.IsValid) { return(View(model)); } CEUserManager ceUserManager = new CEUserManager(); SHA1HashProvider sHA1HashProvider = new SHA1HashProvider(); User anActiveOrBlockedUser = ceUserManager.GetSigningUserByEmail(model.Email); if (anActiveOrBlockedUser != null && sHA1HashProvider.CheckHashSHA1(model.Password, anActiveOrBlockedUser.Password, 8)) { UserDTO userDTO = EntityDTOHelper.GetEntityDTO <User, UserDTO>(anActiveOrBlockedUser); AuthenticatedUserInfo authenticatedUserInfo = new AuthenticatedUserInfo(userDTO); ceUserManager.SignInUser(HttpContext, string.Format("{0}", authenticatedUserInfo.FullName), false); Session["loggeduser"] = authenticatedUserInfo; SessionManager.RegisterSessionActivity(loggedInAt: DateTime.Now); return(this.RedirectToLocal(returnUrl)); } ModelState.AddModelError(string.Empty, "Login attempt failed."); } catch (Exception e) { System.Diagnostics.Trace.WriteLine(e); } return(this.View(model)); }
public ActionResult ForgotPassword(ForgotPasswordViewModel model) { SessionManager.RegisterSessionActivity(); if (ModelState.IsValid) { User anActiveOrBlockedUser = null; CEUserManager ceUserManager = new CEUserManager(); anActiveOrBlockedUser = ceUserManager.GetSigningUserByEmail(model.Email); if (anActiveOrBlockedUser == null) { // Don't reveal that the user does not exist or is not confirmed return(View("ForgotPasswordConfirmation")); } // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771 // Send an email with this link string longTicks = DateTime.Now.Ticks.ToString(), code = DataSecurityTripleDES.GetEncryptedText(longTicks); using (CraveatsDbContext craveatsDbContext = new CraveatsDbContext()) { User anUser = craveatsDbContext.User.First(u => u.Id == anActiveOrBlockedUser.Id); anUser.ResetCode = longTicks; anUser.ResetCodeExpiry = DateTime.Now.AddDays(1); anUser.ResetCodeSentAt = DateTime.Now; anUser.LastUpdated = DateTime.Now; craveatsDbContext.SaveChanges(); } var callbackUrl = Url.Action("ResetPassword", "Login", new { userId = DataSecurityTripleDES.GetEncryptedText(anActiveOrBlockedUser.Id), code = code }, protocol: Request.Url.Scheme); StringBuilder sbSubject = new StringBuilder("Craveats reset password request"), sbEmailBody = new StringBuilder("<p>Dear [FullName],</p><p>We have received a request that you would like to reset your account password with us." + "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a></p><p>Thank you.</p><p>Craveats</p>"); CommunicationServiceProvider.SendOutgoingNotification( new MailAddress( anActiveOrBlockedUser.EmailAddress, string.Format("{0}{1}{2}", anActiveOrBlockedUser?.FirstName, " ", anActiveOrBlockedUser?.Surname).Trim()), sbSubject.ToString(), sbEmailBody.Replace("[FullName]", string.Format("{0}{1}{2}", anActiveOrBlockedUser?.FirstName, " ", anActiveOrBlockedUser?.Surname).Trim()).ToString()); return(RedirectToAction("ForgotPasswordConfirmation", "Login")); } // If we got this far, something failed, redisplay form return(View(model)); }