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 result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout : false); switch (result) { case SignInStatus.Success: using (var dbContext = new EduCareDBEntities()) { AspNetUser user = dbContext.AspNetUsers.Where(d => d.Email == model.Email).FirstOrDefault(); AspNetRole userRole = user.AspNetRoles.FirstOrDefault(); Session["UserEmail"] = user.Email; Session["Role"] = userRole.Name; if (userRole.Name == "Parents") { List <Parent> parentList = dbContext.Parents.ToList(); Parent parent = parentList.Where(d => d.Email == user.Email).FirstOrDefault(); if (parent != null) { Session["UserName"] = parent.FirstName + " " + parent.LastName; Session["ParentObject"] = parent; } else { ModelState.AddModelError("", "Your account is not yet activated!"); return(View(model)); } } else if (userRole.Name == "Student") { List <Student> studentList = dbContext.Students.ToList(); Student student = studentList.Where(d => d.Email == user.Email).FirstOrDefault(); if (student != null) { Session["UserName"] = student.FirstName + " " + student.LastName; Session["StudentObject"] = student; } else { ModelState.AddModelError("", "Your account is not yet activated!"); return(View(model)); } } else if (userRole.Name == "Teacher") { List <Teacher> teacherList = dbContext.Teachers.ToList(); Teacher teacher = teacherList.Where(d => d.Email == user.Email).FirstOrDefault(); if (teacher != null) { Session["UserName"] = teacher.FirstName + " " + teacher.LastName; Session["TeacherObject"] = teacher; } else { ModelState.AddModelError("", "Your account is not yet activated!"); return(View(model)); } } else if (userRole.Name == "Admin") { Admin admin = dbContext.Admins.Where(d => d.Email == user.Email).FirstOrDefault(); if (admin != null) { Session["UserName"] = admin.Name; Session["AdminObject"] = admin; } else { Session["UserName"] = user.Email; } } } 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)); } }