예제 #1
0
 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);
 }
예제 #2
0
        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());
        }