public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return View(model); } // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, change to shouldLockout: true var user = db.Users.FirstOrDefault(x => x.UserName == model.UserName); if (user != null && !user.Deleted) { var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false); switch (result) { case SignInStatus.Success: return RedirectToAction("AtAGlance", "Home", new { name = User.Identity.Name }); case SignInStatus.LockedOut: return View("Lockout"); case SignInStatus.RequiresVerification: return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); case SignInStatus.Failure: default: ModelState.AddModelError("", "Invalid login attempt."); return View(model); } } else { return View(model); } }
public ActionResult RegisterAndAdd(int invitationId, Guid guid) { Invitation invitation = db.Invitations.FirstOrDefault(x => x.Id == invitationId); Household householdToJoin = db.Households.FirstOrDefault(x => x.Id == invitation.HouseholdId); ApplicationUser invitedUser = db.Users.FirstOrDefault(x => x.Email == invitation.ToEmail); if (invitation.JoinCode == guid) { if (invitedUser != null) { invitedUser.Households.Add(householdToJoin); LoginViewModel loginModel = new LoginViewModel(); TempData["Message"] = "You have been successfully added to " + householdToJoin.HouseholdName + ". Please login to continue."; db.SaveChanges(); return RedirectToAction("Login", "Account"); } else { RegisterViewModel model = new RegisterViewModel(); model.Email = invitation.ToEmail; model.HouseholdName = "Default"; ViewBag.HouseholdId = invitation.HouseholdId; ViewBag.InvitationId = invitationId; ViewBag.JoinCode = guid; return View(model); } } throw new HttpException(401, "Unauthorized access"); }