public override void OnActionExecuting(ActionExecutingContext filterContext) { if (HttpContext.Current.User.Identity.IsAuthenticated && HttpContext.Current.Session["UserID"] == null) { UnitOfWork db = new UnitOfWork(); var user = db.UserRepository.FindByIdentifier(HttpContext.Current.User.Identity.Name); var currentconfig = db.ConfigRepository.GetAll().Where(z => z.IsActive == true).FirstOrDefault(); Semester setting = db.context.Settings.FirstOrDefault().Semester; //Object ValueSemester = Convert.ChangeType(setting, setting.GetTypeCode()); if (user != null) { HttpContext.Current.Session["UserID"] = user.ID; HttpContext.Current.Session["Name"] = user.FullName; HttpContext.Current.Session["ConfigID"] = currentconfig.ID; HttpContext.Current.Session["SchoolYear"] = currentconfig.SchoolYear; HttpContext.Current.Session["SemesterName"] = setting.GetDisplayName(); HttpContext.Current.Session["Semester"] = setting; if (user.SubjectID != null) { HttpContext.Current.Session["SubjectID"] = user.SubjectID; HttpContext.Current.Session["SubjectName"] = user.Subject.SubjectName; } if (user.Type == UserType.Student && user.School != null) { bool hasClass = user.ClassMembers .Any(c => c.ConfigureID == currentconfig.ID && (c.LearnStatus == LearnStatus.Learning || c.LearnStatus == LearnStatus.Duplicated)); if (hasClass) { //Nếu là học sinh thì lấy lớp học hiện tại HttpContext.Current.Session["ClassName"] = user.ClassMembers .Where(c => c.ConfigureID == currentconfig.ID && (c.LearnStatus == LearnStatus.Learning || c.LearnStatus == LearnStatus.Duplicated)) .Select(c => c.Class.ClassName) .FirstOrDefault(); HttpContext.Current.Session["SchoolName"] = user.ClassMembers .Where(c => c.ConfigureID == currentconfig.ID && c.LearnStatus != LearnStatus.Switched) .Select(c => c.Class.School.SchoolName).First(); } } if (user.Type == UserType.HeadMaster || user.Type == UserType.Teacher) { HttpContext.Current.Session["SchoolName"] = user.School.SchoolName; } } } base.OnActionExecuting(filterContext); }
public ActionResult Login(LoginViewModel model, string ReturnUrl) { if (Request.IsAuthenticated) { return(RedirectToAction("Index", "Admin")); } if (ModelState.IsValid) { var exist = db.UserRepository.CheckExistByIdentifier(model.Identify); if (exist) { var user = db.UserRepository.FindByIdentifier(model.Identify); var calHash = Common.CalculateMD5Hash(model.Password); if (user.Password == calHash && (user.Status == UserStatus.Activated || user.Status == UserStatus.NotActivated)) { var currentconfig = db.ConfigRepository.GetAll().Where(z => z.IsActive == true).FirstOrDefault(); Semester setting = db.context.Settings.FirstOrDefault().Semester; setCookie(user.Identifier, model.RememberMe, user.Role); Session["UserID"] = user.ID; Session["Name"] = user.FullName; Session["Semester"] = setting; if (user.SubjectID != null) { //Nếu là giáo viên thì lấy môn đang dạy Session["SubjectID"] = user.SubjectID; Session["SubjectName"] = user.Subject.SubjectName; Session["SemesterName"] = setting.GetDisplayName(); } if (user.Type == UserType.Student) { bool isInClass = user.ClassMembers .Any(c => c.ConfigureID == currentconfig.ID && c.LearnStatus != LearnStatus.Finished && c.LearnStatus != LearnStatus.Switched); //Nếu là học sinh thì lấy lớp học hiện tại if (isInClass) { Session["ClassName"] = user.ClassMembers .Where(c => c.ConfigureID == currentconfig.ID && c.LearnStatus != LearnStatus.Finished && c.LearnStatus != LearnStatus.Switched) .Select(c => c.Class.ClassName) .FirstOrDefault(); } if (user.School != null) { Session["SchoolName"] = user.School.SchoolName; } } if (user.Type == UserType.Teacher) { if (user.School != null) { Session["SchoolName"] = user.School.SchoolName; } } if (user.Type == UserType.HeadMaster) { Session["SchoolName"] = user.School.SchoolName; } Session["SemesterName"] = setting.GetDisplayName(); Session["ConfigID"] = currentconfig.ID; Session["SchoolYear"] = currentconfig.SchoolYear; if (ReturnUrl != null) { return(Redirect(ReturnUrl)); } if (User.IsInRole("student")) { return(RedirectToAction("Index", "Student")); } if (User.IsInRole("teacher")) { return(RedirectToAction("Index", "Teacher")); } if (User.IsInRole("headmaster")) { return(RedirectToAction("Index", "HeadMaster")); } return(RedirectToAction("Index", "Admin")); } ViewBag.Error = "Sai tài khoản hoặc mật khẩu!"; return(View()); } } ViewBag.Error = "Sai tài khoản hoặc mật khẩu!"; return(View()); }