public async Task <ActionResult> Login(LoginViewModel model, string returnUrl) { if (!ModelState.IsValid) { return(View(model)); } // Require the user to have a confirmed email before they can log on. var user = await UserManager.FindByNameAsync(model.Email); var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false); if (user != null) { if (!await UserManager.IsEmailConfirmedAsync(user.Id)) { ViewBag.errorMessage = "You must have a confirmed email to log on."; return(View("Error")); } if (UserManager.IsInRole(user.Id, "Employer")) { DB66Entities db = new DB66Entities(); var people = db.People; if (people.Any(p => p.User_AccountID == user.Id)) { return(RedirectToAction("MyJobs", "Employer")); } else { return(RedirectToAction("AddInformation", "Employer")); } } if (UserManager.IsInRole(user.Id, "Freelancer")) { DB66Entities db = new DB66Entities(); var people = db.People; if (people.Any(p => p.User_AccountID == user.Id)) { return(RedirectToAction("ManageJobs", "Freelancers")); } else { return(RedirectToAction("AddInfo", "Freelancers")); } } if (UserManager.IsInRole(user.Id, "Admin")) { return(RedirectToAction("ApprovalRequests", "Admin")); } } // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, change to shouldLockout: true switch (result) { case SignInStatus.Success: return(RedirectToLocal(returnUrl)); 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)); } }