public async Task<ActionResult> Signup(SignupModel model) { if (ModelState.IsValid) { using (var userManager = HttpContext.GetOwinContext().GetUserManager<LambdaUserManager>()) { var user = userManager.FindByEmail(model.Email); if (user != null) { ModelState.AddModelError("Email", "User exists already."); } else { user = new LambdaUser { UserName = model.UserName, Status = UserStatus.Created, Password = model.Password, Emails = new List<string>() {model.Email}, TimezoneOffset = model.Timezoneoffset, CreatedAt = DateTime.UtcNow }; var result = await userManager.CreateAsync(user); if (result.Succeeded) { var scheme = this.Request.Url == null ? "http" : this.Request.Url.Scheme; var url = this.Url.Action("Check", "Account", new { id = user.Id }, scheme); var body = string.Format(Settings.Default.ValidationEmailBody, model.UserName, url); userManager.SendEmailAsync(model.Email, Settings.Default.ValidationEmailSubject, body); //sendEmailTask.Wait(); TempData["ValidationModel"] = new ValidationModel() { Id = user.Id, Email = model.Email, UserName = model.UserName, Message = "Validation email has been sent to your email." }; return RedirectToAction("Validation", "Account"); } if (result.Errors != null && result.Errors.Any()) ModelState.AddModelError("", result.Errors.FirstOrDefault()); } } } return View(model); }
public ActionResult SendEmail(string id, string email) { if (!string.IsNullOrWhiteSpace(id)) { using (var userManager = HttpContext.GetOwinContext().GetUserManager<LambdaUserManager>()) { var user = userManager.FindById(id); if (user != null) { var scheme = this.Request.Url == null ? "http" : this.Request.Url.Scheme; var url = this.Url.Action("Check", "Account", new { id = user.Id }, scheme); var body = string.Format(Settings.Default.ValidationEmailBody, user.UserName, url); userManager.SendEmailAsync(email, Settings.Default.ValidationEmailSubject, body); //sendEmailTask.Wait(); } } } TempData["ValidationModel"] = new ValidationModel() { Id = id, Email = email, Message = "Validation email has been sent already." }; return RedirectToAction("Validation", "Account"); }
public async Task<ActionResult> Signin(SigninModel model) { if (ModelState.IsValid) { using (var userManager = HttpContext.GetOwinContext().GetUserManager<LambdaUserManager>()) { var user = userManager.FindByEmail(model.Email); if (user == null) { ModelState.AddModelError("Email", "User does not exist."); return View(model); } if (user.Status == UserStatus.Created) { TempData["ValidationModel"] = new ValidationModel() { Id = user.Id, Email = model.Email, UserName = user.UserName, Message = "Validation email has been sent to your email, this is the last step before using Lambda website." }; return RedirectToAction("Validation", "Account"); } if(user.Status == UserStatus.Locked) { ModelState.AddModelError("Email", "Your account has been locked, please contact administrator to unlock."); return View(model); } if(user.Status == UserStatus.Discarded) { ModelState.AddModelError("Email", "This account has been deleted already."); return View(model); } using (var signinManager = HttpContext.GetOwinContext().GetUserManager<LambdaUserManager.LambdaySignInManager>()) { var status = await signinManager.PasswordSignInAsync(model.Email, model.Password, isPersistent: true, shouldLockout: false); switch (status) { case SignInStatus.Success: return RedirectToAction("Index", "Weight"); default: ModelState.AddModelError("Password", "Email or Password is not correct."); return View(model); } } } } return View(model); }