public MgUserController(congthongtinContext context) { this.db = context; }
public MgRoleController(congthongtinContext context) { this.db = context; }
public LoginModel() { db = new congthongtinContext(); }
public static void SyncTbRoutes() { congthongtinContext db = new congthongtinContext(); List <string> listControllerSkipRoutes = new List <string>() { "Logout", "GetCaptcha", "Home", "Login" }; var rt = new List <TbRoute>(); var assembly = Assembly.GetExecutingAssembly(); //var types = assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(Controller)) && t.IsPublic && !t.IsAbstract); var tt = assembly.GetTypes().Where(m => m.IsSubclassOf(typeof(Controller)) && m.IsPublic && !m.IsAbstract); foreach (var type in tt) { string _namespace = type.Namespace; string _controllerName = type.Name.Substring(0, type.Name.IndexOf("Controller", System.StringComparison.InvariantCulture)); if (!listControllerSkipRoutes.Contains(_controllerName)) //Bỏ qua các controller trong danh sách không thêm vào route { if (type.CustomAttributes.Where(c => c.AttributeType == typeof(Permission)).Any()) { var methods = type.GetMethods().Where(x => x.IsPublic && x.DeclaringType.Equals(type)); foreach (var method in methods) { string _actionName = method.Name; rt.Add(new TbRoute() { Namespace = _namespace, ControllerName = _controllerName, ActionName = _actionName, Name = _actionName }); } } else { var methods = type.GetMethods() .Where(x => x.CustomAttributes.Where(c => c.AttributeType == typeof(Permission)).Any() && x.IsPublic && x.DeclaringType.Equals(type)); foreach (var method in methods) { string _actionName = method.Name; rt.Add(new TbRoute() { Namespace = _namespace, ControllerName = _controllerName, ActionName = _actionName, Name = _actionName }); } } } } //Remove route from db when non exist in new list route db.TbRoute .AsEnumerable() .Where(p => !rt.Any(p2 => p2.Namespace == p.Namespace && p2.ControllerName == p.ControllerName && p2.ActionName == p.ActionName)) .ToList() .All(p => { db.TbRoute.Remove(p); db.SaveChanges(); return(true); }); //Add route from new list route when non exist in db rt.Where(p => !db.TbRoute.Any(p2 => p2.Namespace == p.Namespace && p2.ControllerName == p.ControllerName && p2.ActionName == p.ActionName)) .All(p => { db.TbRoute.Add(p); db.SaveChanges(); return(true); }); //Remove action from db when non exist in new list page db.TbAction .AsEnumerable() .Where(p => !rt.GroupBy(p2 => new { p2.Namespace, p2.ControllerName, p2.ActionName }, p2 => p2, (key, g) => new { key, g }) .Any(p2 => p2.key.Namespace == p.Namespace && p2.key.ControllerName == p.ControllerName && p2.key.ActionName == p.Action)) .ToList() .All(p => { db.TbAction.Remove(p); db.SaveChanges(); return(true); }); //Remove controller from db when non exist in new list page db.TbController .AsEnumerable() .Where(p => !rt.GroupBy(p2 => new { p2.Namespace, p2.ControllerName }, p2 => p2, (key, g) => new { key, g }) .Any(p2 => (p2.key.Namespace == p.Namespace && p2.key.ControllerName == p.Controller) || (p.ParentId == null && p.Level == 1))) .ToList() .All(p => { db.TbController.Remove(p); db.SaveChanges(); return(true); }); //Add action from new list page when non exist in db rt.GroupBy(p2 => new { p2.Namespace, p2.ControllerName, p2.ActionName }, p2 => p2, (key, g) => new { key, g }).Where(p2 => !db.TbAction.Any(p => p2.key.Namespace == p.Namespace && p2.key.ControllerName == p.ControllerName && p2.key.ActionName == p.Action)) .ToList().ForEach(p => { var ctrl = db.TbController.FirstOrDefault(ct => ct.Namespace == p.key.Namespace && ct.Controller == p.key.ControllerName); var newAction = new TbAction() { Action = p.key.ActionName, Name = p.key.ActionName, Display = p.key.ActionName, Url = "/" + p.key.ActionName, Namespace = p.key.Namespace, ControllerName = p.key.ControllerName, IsActive = true, IsDelete = false }; if (ctrl != null) { newAction.Controller = ctrl; } else { newAction.Controller = new TbController() { Controller = p.key.ControllerName, Name = p.key.ControllerName, Display = p.key.ControllerName, Namespace = p.key.Namespace, Url = "/admin/" + p.key.ControllerName, Level = 2, ParentId = 1, IsActive = true, IsDelete = false }; } db.TbAction.Add(newAction); db.SaveChanges(); }); }
public HomeController(congthongtinContext context) { db = context; }
public override void OnActionExecuting(ActionExecutingContext filterContext) { var actionResult = ((ControllerActionDescriptor)filterContext.ActionDescriptor).MethodInfo.ReturnType; string actionName = ((ControllerActionDescriptor)filterContext.ActionDescriptor).ActionName; string controllerName = ((ControllerActionDescriptor)filterContext.ActionDescriptor).ControllerName; string currentUrl = filterContext.HttpContext.Request.Path; Controller controller = filterContext.Controller as Controller; //Validate var descriptor = filterContext.ActionDescriptor as ControllerActionDescriptor; //if (descriptor != null) //{ // var parameters = descriptor.MethodInfo.GetParameters(); // foreach (var parameter in parameters) // { // var argument = filterContext.ActionArguments[parameter.Name]; // EvaluateValidationAttributes(parameter, argument, controller.ViewData.ModelState); // } //} if (!controller.ViewData.ModelState.IsValid) { List <validateObject> validationErrors = new List <validateObject>(); Dictionary <string, string> validationD = new Dictionary <string, string>(); foreach (var item in controller.ViewData.ModelState) { string key = item.Key; var errors = item.Value.Errors; foreach (var error in errors) { if (!string.IsNullOrEmpty(error.ErrorMessage)) { //var msg = error.ErrorMessage; var msg = String.Format("Xin mời nhập {0}", key); validationErrors.Add(new validateObject { PropertyName = key, ErrorMessage = msg }); } } } //Xét action result (JsonResult || ActionResult) if (actionResult.Name == "JsonResult") { var resSubmit = new ResSubmit(false, "ValidateError"); resSubmit.extend = validationErrors; filterContext.Result = new ObjectResult(resSubmit); } if (actionResult.Name == "IActionResult") { controller.ViewBag.Error = validationErrors; } } //End Validate //Tạo Dictionary lỗi ngoại lệ using (congthongtinContext db = new congthongtinContext()) { var listException = db.TbException.FromSqlRaw("exec [dbo].[getException]").ToList(); controller.ViewBag.SettingEx = listException.ToDictionary(x => x.Key, x => x.ValueVi); } //End tạo dictionary //Ghi nhớ đăng nhập var ckRemember = filterContext.HttpContext.Request.Cookies["userRemember"]; if (ckRemember != null) { var info = Utils.Decrypt(ckRemember, "cookie").Split(','); if (info[0] == "on") { var idUs = Int32.Parse(info[1]); var userName = info[2]; using (var db = new congthongtinContext()) { TbUser user = db.TbUser.FirstOrDefault(us => us.Id == idUs && us.UserName == userName && us.IsActive == true); if (user != null) { filterContext.HttpContext.Session.SetString("AccountSession", JsonConvert.SerializeObject(new AccountSession() { Id = user.Id, UserName = user.UserName != null ? user.UserName : user.Email, RoleGroupId = user.RoleGroupId, FullName = user.FullName })); } } } } //End cookie ghi nhớ đăng nhập //Check session List <string> actionSkip = new List <string>() { "Logout", "GetCaptcha" }; var acSession = filterContext.HttpContext.Session.GetString("AccountSession"); if (acSession == null && controllerName != "Login") { switch (actionResult.Name) { case "JsonResult": var resSubmit = new ResSubmit(false, "Bạn cần đăng nhập!"); filterContext.Result = new ObjectResult(resSubmit); break; case "IActionResult": filterContext.Result = new RedirectResult("admin/Login?url=" + currentUrl); break; } } else { if (controllerName != "Login" && !actionSkip.Contains(actionName)) { AccountSession sessionAccount = acSession == null ? default(AccountSession) : JsonConvert.DeserializeObject <AccountSession>(acSession); using (var db = new congthongtinContext()) { TbUser user = db.TbUser.FirstOrDefault(us => us.Id == sessionAccount.Id && us.UserName == sessionAccount.UserName && us.IsActive == true); if (user == null) { filterContext.Result = new RedirectResult("admin/Login?url=" + currentUrl); } else { if (user.UserName != "admin1234$#@!") { var route = db.TbRoute.Where(m => m.Namespace == "CongThongTin.Areas.Admin.Controllers" && m.ControllerName == controllerName && m.ActionName == actionName).FirstOrDefault(); if (route != null) { var idG = user.RoleGroupId; var role = db.TbRoleGroup.Where(m => m.Id == idG).FirstOrDefault(); if (role == null) { switch (actionResult.Name) { case "JsonResult": var jsonResult = new ResSubmit(false, "Tài khoản không đủ quyền thực hiện hành động!"); filterContext.Result = new ObjectResult(jsonResult); //filterContext.HttpContext.Response.StatusCode = 205; break; case "IActionResult": filterContext.Result = new ViewResult { //MasterName = "~/Areas/Admin/Views/Layout/AdminLayout.cshtml", ViewName = "~/Areas/Admin/Views/AccessDenied/Index2.cshtml", //ViewData = filterContext.Controller.ViewData, //TempData = filterContext.Controller.TempData }; break; default: break; } } } } } } } } //End check session base.OnActionExecuting(filterContext); }
public MgModulController(congthongtinContext context) { this.db = context; }