public async Task<ActionResult> LogIn(AccountLoginOrRegisterViewModel model) { if (!ModelState.IsValid) { return this.View(model); } var user = await LunchContext.Users.SingleOrDefaultAsync(u => u.EmailAddress == model.Username); if (user != null && user.Password == HashHelper.GetHash(model.Password)) { this.LogInInternal(user.EmailAddress); return this.Redirect(model.ReturnUrl ?? FormsAuthentication.DefaultUrl); } ModelState.AddModelError(string.Empty, WebCommon.LoginFailed); return this.View("LoginOrRegister", model); }
public async Task<ActionResult> Register(AccountLoginOrRegisterViewModel model) { var loginTaken = await LunchContext.Users.AnyAsync(u => u.EmailAddress == model.Username); if (loginTaken) { ModelState.AddModelError(string.Empty, WebCommon.LoginAlreadyTaken); } else { try { var user = LunchContext.Users.Add(new User { EmailAddress = model.Username, PasswordChangeSecret = Guid.NewGuid() }); var activationUrl = string.Format( "To activate your lunchdictator account please click <a href='{0}{1}'>here</a>", HttpContext.Request.Url.GetCurrentUrl(), Url.Action("Activate", "Account", new { passwordChangeSecret = user.PasswordChangeSecret })); await EmailSender.SendEmail(model.Username, WebCommon.ActivationEmailSubject, activationUrl); await LunchContext.SaveChangesAsync(); model.Message = WebCommon.RegistrationSuccess; } catch (DbEntityValidationException ex) { foreach (var validationError in ex.EntityValidationErrors.Where(v => !v.IsValid)) { foreach (var error in validationError.ValidationErrors) { ModelState.AddModelError(string.Empty, error.ErrorMessage); } } } } return this.View("LoginOrRegister", model); }