public PartialViewResult StartMenu() { List <ViewPermissionGroup> PermissionGroups; //由于后台Controllers部分没有加上 [Permission] if (System.Web.HttpContext.Current.Session["PermissionGroups"] == null) { using (FlyDbContext cxt = new FlyDbContext()) { var employeeId = Guid.Parse(User.Identity.GetUserId()); var employee = cxt.Employees.FirstOrDefault(m => m.Id == employeeId); var roleIdList = employee.Roles.Select(m => m.RoleId).ToList(); System.Web.HttpContext.Current.Session["PermissionGroups"] = GetViewPermissionGroup(cxt, roleIdList, employee.PlatformId); System.Web.HttpContext.Current.Session["PermissionLines"] = GetViewPermissionLine(cxt, roleIdList); } PermissionGroups = (System.Web.HttpContext.Current.Session["PermissionGroups"] as List <ViewPermissionGroup>).OrderBy(p => p.SN).ToList(); return(PartialView(PermissionGroups)); } else { PermissionGroups = (System.Web.HttpContext.Current.Session["PermissionGroups"] as List <ViewPermissionGroup>).OrderBy(p => p.SN).ToList(); return(PartialView(PermissionGroups)); } }
private void FindUrl(string action, string controller) { using (FlyDbContext cxt = new FlyDbContext()) { var path = "/" + controller + "/" + action; var i = cxt.PermissionLines.Where(m => m.Url.ToLower().Contains(path.ToLower())).Count(); i += cxt.PermissionGroups.Where(m => m.Url.ToLower().Contains(path.ToLower()) && m.PlatformId == cxt.Platforms.FirstOrDefault().Id).Count(); if (i == 0) { PermissionGroup permissionGroup = cxt.PermissionGroups.Where(m => m.DisplayName == "未初始化的权限组").FirstOrDefault(); if (permissionGroup == null) { permissionGroup = new PermissionGroup { DisplayName = "未初始化的权限组", Tag = "#", Url = "#", SN = 0, PermissionLines = new List <PermissionLine>(), PlatformId = cxt.Platforms.FirstOrDefault().Id }; cxt.PermissionGroups.Add(permissionGroup); } permissionGroup.PermissionLines.Add( new PermissionLine { DisplayName = "未初始化的权限项", Url = path, Tag = "#" }); cxt.SaveChanges(); } } }
public JsonResult EditPermissionLine() { Guid platformGuid = GetPlatformId(); if (!string.IsNullOrEmpty(Request.Form["Id"])) { Guid id = Guid.Parse(Request.Form["Id"]); using (FlyDbContext ctx = new FlyDbContext()) { PermissionLine pl = ctx.PermissionLines.Where(o => o.Group.PlatformId == platformGuid && o.Id == id).FirstOrDefault(); UpdateModel(pl); ctx.SaveChanges(); var PermissionLines = System.Web.HttpContext.Current.Session["PermissionLines"] as List <ViewPermissionLine>; var i = (from t in PermissionLines where t.Id == id select t).Count(); if (i > 0) { PermissionParticle.SetPermission(); } return(new JsonResult() { Data = new { resultCode = 1, message = "操作完成" } }); } } else { return(new JsonResult() { Data = new { resultCode = 0, message = "非法请求" } }); } }
private void LoopGetParent(FlyDbContext ctx, PermissionGroup perGroup, List <PermissionGroup> orgList, Guid platformGuid) { if (perGroup.ParentId != null && !orgList.Exists(delegate(PermissionGroup o) { return(o.Id == perGroup.ParentId); })) { PermissionGroup parentPerGroup = ctx.PermissionGroups.Where(o => o.PlatformId == platformGuid && o.Id == perGroup.ParentId).FirstOrDefault(); orgList.Add(parentPerGroup); LoopGetParent(ctx, parentPerGroup, orgList, platformGuid); } }
public JsonResult MovePermissionLines() { Guid platformGuid = GetPlatformId(); string ids = Request.Form["ids"]; Guid parentid; if (!string.IsNullOrEmpty(ids) && Guid.TryParse(Request.Form["parentid"], out parentid)) { string[] idArray = ids.Split(','); List <Guid> idlist = new List <Guid>(); foreach (string id in idArray) { Guid intId; if (Guid.TryParse(id, out intId)) { idlist.Add(intId); } else { return(new JsonResult() { Data = new { resultCode = 0, message = "非法的请求" } }); } } using (FlyDbContext ctx = new FlyDbContext()) { var parent = from p in ctx.PermissionGroups where p.Id == parentid && p.PlatformId == platformGuid select p; if (parent != null && parent.Count() > 0) { var items = from o in ctx.PermissionLines where ((idlist).Contains(o.Id) || o.Id == parentid) && o.Group.PlatformId == platformGuid select o; foreach (var item in items) { item.GroupId = parentid; } ctx.SaveChanges(); } } return(new JsonResult() { Data = new { resultCode = 1, message = "操作成功" } }); } else { return(new JsonResult() { Data = new { resultCode = 0, message = "非法的请求" } }); } }
/// <summary> /// 获取权限组 /// </summary> /// <param name="cxt"></param> /// <returns></returns> private static List <ViewPermissionGroup> GetViewPermissionGroup(FlyDbContext cxt, List <Guid> roleIdList, Guid platformId) { List <PermissionGroup> childrenPermissionGroups = (from t in cxt.PermissionGroups join t1 in cxt.PermissionLines on t.Id equals t1.GroupId join t2 in cxt.RolePermissions on t1.Id equals t2.PermissionLineId where roleIdList.Contains(t2.RoleId) && t.PlatformId == platformId select t).ToList(); List <PermissionGroup> newChildrenPermissionGroups = childrenPermissionGroups; do { newChildrenPermissionGroups = newChildrenPermissionGroups.Where(m => m.Parent != null).Select(m => m.Parent).ToList(); childrenPermissionGroups.AddRange(newChildrenPermissionGroups); }while (newChildrenPermissionGroups.Where(m => m.Parent != null).Select(m => m.Parent).ToList().Count > 0); return(childrenPermissionGroups.Distinct().Select(m => new ViewPermissionGroup { Id = m.Id, ParentId = m.ParentId, Url = m.Url, Tag = m.Tag, SN = m.SN, Headshot = m.Headshot, DisplayName = m.DisplayName }).ToList()); //;拥有的权限组 }
private List <Platform> GetPlatformByPage(int pageIndex, int pageSize, string keyword) { using (FlyDbContext ctx = new FlyDbContext()) { ctx.Configuration.ProxyCreationEnabled = false; if (string.IsNullOrEmpty(keyword)) { return(ctx.Platforms.OrderBy(s => s.Id).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList()); } else { return(ctx.Platforms.Where(p => p.PlatformName.Contains(keyword) || p.PhoneNumber.Contains(keyword) || p.ZipCode.Contains(keyword) || p.Remark.Contains(keyword) || p.Contact.Contains(keyword)).OrderBy(s => s.Id).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList()); } } }
public JsonResult AddPermissionLine() { Guid platformGuid = GetPlatformId(); PermissionLine pl = new PermissionLine(); UpdateModel(pl); using (FlyDbContext ctx = new FlyDbContext()) { ctx.PermissionLines.Add(pl); ctx.SaveChanges(); return(new JsonResult() { Data = new { resultCode = 1, message = "操作完成" } }); } }
/// <summary> /// 获取符合条件的权限项总数 /// </summary> /// <param name="keyword"></param> /// <param name="platformGuid"></param> /// <returns></returns> private Int32 GetPermissionLineCountByKeyword(string keyword, Guid platformGuid) { if (string.IsNullOrEmpty(keyword)) { using (FlyDbContext ctx = new FlyDbContext()) { return(ctx.PermissionLines.Count(p => p.Group.PlatformId == platformGuid)); } } else { using (FlyDbContext ctx = new FlyDbContext()) { return(ctx.PermissionLines.Count(p => p.Group.PlatformId == platformGuid && (p.DisplayName.Contains(keyword) || p.Tag.Contains(keyword) || p.Url.Contains(keyword)))); } } }
/// <summary> /// 关键字分页查找权限项目 /// </summary> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <param name="keyword"></param> /// <param name="platformGuid"></param> /// <returns></returns> private List <PermissionLineViewModel> GetPermissionLineyByPageWithKeyword(int pageIndex, int pageSize, string keyword, Guid platformGuid) { using (FlyDbContext ctx = new FlyDbContext()) { List <PermissionLine> plList = new List <PermissionLine>(); if (string.IsNullOrEmpty(keyword)) { plList = ctx.PermissionLines.Where(p => p.Group.PlatformId == platformGuid).OrderBy(s => s.GroupId).ThenBy(s => s.Id).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); } else { plList = ctx.PermissionLines.Where(p => p.Group.PlatformId == platformGuid && (p.DisplayName.Contains(keyword) || p.Tag.Contains(keyword) || p.Url.Contains(keyword))).OrderBy(s => s.GroupId).ThenBy(s => s.Id).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); } List <PermissionLineViewModel> viewList = new List <PermissionLineViewModel>(); return(GetViewModelList(platformGuid, plList, viewList)); } }
private Int32 GetPlatformCountByKeyword(string keyword) { if (string.IsNullOrEmpty(keyword)) { using (FlyDbContext ctx = new FlyDbContext()) { return(ctx.Platforms.Count()); } } else { using (FlyDbContext ctx = new FlyDbContext()) { return(ctx.Platforms.Count(p => p.PlatformName.Contains(keyword) || p.PhoneNumber.Contains(keyword) || p.ZipCode.Contains(keyword) || p.Remark.Contains(keyword) || p.Contact.Contains(keyword))); } } }
/// <summary> /// 把权限加入session中 /// </summary> /// <param name="permissionGroups"></param> /// <param name="permissionLines"></param> private static void SetPermission(out List <ViewPermissionGroup> permissionGroups, out List <ViewPermissionLine> permissionLines) { using (FlyDbContext cxt = new FlyDbContext()) { var employeeId = Guid.Parse(HttpContext.Current.User.Identity.GetUserId()); var employee = cxt.Employees.FirstOrDefault(m => m.Id == employeeId); var roleIdList = employee.Roles.Select(m => m.RoleId).ToList(); #region 临时使用 Init(roleIdList); #endregion System.Web.HttpContext.Current.Session["PermissionGroups"] = permissionGroups = GetViewPermissionGroup(cxt, roleIdList, employee.PlatformId); System.Web.HttpContext.Current.Session["PermissionLines"] = permissionLines = GetViewPermissionLine(cxt, roleIdList); } }
public JsonResult RemovePermissionGroups() { Guid platformGuid = GetPlatformId(); string ids = Request.Form["ids"]; if (!string.IsNullOrEmpty(ids)) { string[] idArray = ids.Split(','); List <Guid> idlist = new List <Guid>(); foreach (string id in idArray) { Guid intId; if (Guid.TryParse(id, out intId)) { idlist.Add(intId); } else { return(new JsonResult() { Data = new { resultCode = 0, message = "非法的请求" } }); } } int count = 0; using (FlyDbContext ctx = new FlyDbContext()) { List <PermissionGroup> removeItems = (from o in ctx.PermissionGroups where (idlist).Contains(o.Id) && o.PlatformId == platformGuid select o).ToList(); count = removeItems.Count; ctx.PermissionGroups.RemoveRange(removeItems); ctx.SaveChanges(); } return(new JsonResult() { Data = new { resultCode = 1, message = "成功删除" + count + "项" } }); } else { return(new JsonResult() { Data = new { resultCode = 0, message = "非法的请求" } }); } }
public JsonResult AddPermissionGroup() { Guid platformGuid = GetPlatformId(); PermissionGroup pg = new PermissionGroup(); UpdateModel(pg); pg.PlatformId = platformGuid; using (FlyDbContext ctx = new FlyDbContext()) { if (pg.ParentId == Guid.Empty) { pg.ParentId = null; } ctx.PermissionGroups.Add(pg); ctx.SaveChanges(); return(new JsonResult() { Data = new { resultCode = 1, message = "操作完成" } }); } }
/// <summary> /// 生成视图模型列表 /// </summary> /// <param name="platformGuid"></param> /// <param name="permissionLineList"></param> /// <param name="viewList"></param> /// <returns></returns> private List <PermissionLineViewModel> GetViewModelList(Guid platformGuid, List <PermissionLine> permissionLineList, List <PermissionLineViewModel> viewList) { List <Guid> idList = new List <Guid>(); foreach (var item in permissionLineList) { if (!idList.Contains(item.GroupId)) { idList.Add(item.GroupId); } PermissionLineViewModel viewitem = new PermissionLineViewModel(); viewitem._parentId = "-" + item.GroupId; viewitem.DisplayName = item.DisplayName; viewitem.GroupId = item.GroupId.ToString(); viewitem.Id = item.Id.ToString(); viewitem.Tag = item.Tag; viewitem.Url = item.Url; viewList.Add(viewitem); } using (FlyDbContext ctx = new FlyDbContext()) { List <PermissionGroup> pgList = ctx.PermissionGroups.Where(o => o.PlatformId == platformGuid && idList.Contains(o.Id)).ToList(); int pgListCount = pgList.Count; for (int i = 0; i < pgListCount; i++) { LoopGetParent(ctx, pgList[i], pgList, platformGuid); } foreach (PermissionGroup pg in pgList) { PermissionLineViewModel viewItem = new PermissionLineViewModel(); viewItem._parentId = pg.ParentId == null ? null : "-" + pg.ParentId; viewItem.DisplayName = pg.DisplayName; viewItem.Id = "-" + pg.Id; viewList.Add(viewItem); viewItem.Url = pg.Url; viewItem.Tag = pg.Tag; } } return(viewList); }
public JsonResult Remove(List <Guid> ids) { Guid platformGuid = GetPlatformId(); if (ids.Count > 0) { int count = 0; using (FlyDbContext ctx = new FlyDbContext()) { List <Organization> removeItems = (from o in ctx.Organizations where (ids).Contains(o.Id) && o.PlatformId == platformGuid select o).ToList(); count = removeItems.Count; try { ctx.Organizations.RemoveRange(removeItems); ctx.SaveChanges(); } catch (Exception) { return(new JsonResult() { Data = new { resultCode = 0, message = "删除失败,某些项正在被使用" } }); } } return(new JsonResult() { Data = new { resultCode = 1, message = "成功删除" + count + "项" } }); } else { return(new JsonResult() { Data = new { resultCode = 0, message = "非法的请求" } }); } }
/// <summary> /// 把所有权限项加到当前用户的角色 /// </summary> /// <param name="cxt"></param> /// <param name="roleIdList"></param> public static void Init(List <Guid> roleIdList) { if (roleIdList.Count == 0) { using (FlyDbContext cxt = new FlyDbContext()) { var employeeId = Guid.Parse(HttpContext.Current.User.Identity.GetUserId()); var role = cxt.Roles.FirstOrDefault(); var Permissions = cxt.PermissionLines.ToList(); var Employee = cxt.Employees.Where(m => m.Id == employeeId).FirstOrDefault(); foreach (var permissionLine in Permissions) { var rolePermission = new RolePermission(); rolePermission.PermissionLineId = permissionLine.Id; rolePermission.RoleId = role.Id; cxt.RolePermissions.Add(rolePermission); } Employee.Roles.Add(new EmployeeRole { RoleId = role.Id }); cxt.SaveChanges(); } } }
public FlyRepository(FlyDbContext context) { _context = context; }
public ComponentRepository(FlyDbContext context) { _context = context; }
public MaterialController(IMaterialRepository materialsRepo, FlyDbContext flyContext) { _materialsRepo = materialsRepo; _flyContext = flyContext; }
/// <summary> /// 获取权限项 /// </summary> /// <param name="cxt"></param> /// <returns></returns> private static List <ViewPermissionLine> GetViewPermissionLine(FlyDbContext cxt, List <Guid> roleIdList) { return((from t in cxt.PermissionLines join t1 in cxt.RolePermissions on t.Id equals t1.PermissionLineId where roleIdList.Contains(t1.RoleId) select t).Distinct().Select(m => new ViewPermissionLine { Id = m.Id, Url = m.Url, GroupId = m.GroupId, Tag = m.Tag }).ToList()); }
/// <summary> /// 获取EasyUI树形数据 /// </summary> /// <returns></returns> public JsonResult GetPermissionLinesTree() { Guid platformGuid = GetPlatformId(); using (FlyDbContext ctx = new FlyDbContext()) { List <PermissionLine> plList = new List <PermissionLine>(); //获取所有权限项 plList = ctx.PermissionLines.Where(p => p.Group.PlatformId == platformGuid).OrderBy(s => s.Id).ToList(); List <Guid> idList = new List <Guid>(); //获取权限项用到的所有权限组 foreach (var item in plList) { if (!idList.Contains(item.GroupId)) { idList.Add(item.GroupId); } } List <PermissionGroup> pgList = ctx.PermissionGroups.Where(o => o.PlatformId == platformGuid && idList.Contains(o.Id)).ToList(); int pgListCount = pgList.Count; for (int i = 0; i < pgListCount; i++) { LoopGetParent(ctx, pgList[i], pgList, platformGuid); } //到这里所有权限项和相关所有权限组都取到了,下面递归构建树形试图对象 List <PermissionLineTreeViewModel> viewTreeItemList = new List <PermissionLineTreeViewModel>(); //一级节点 List <PermissionGroup> rootPGList = pgList.FindAll(delegate(PermissionGroup pg) { return(pg.ParentId == null); }); foreach (var rootPG in rootPGList) { PermissionLineTreeViewModel treeItem = new PermissionLineTreeViewModel(); treeItem.id = "-" + rootPG.Id.ToString();//负数以与权限项做区别 treeItem.text = rootPG.DisplayName; List <PermissionGroup> childrenPGList = pgList.FindAll(delegate(PermissionGroup pg) { return(pg.ParentId == rootPG.Id); }); foreach (var childrenPG in childrenPGList) { //递归子节点 LoopGetPermissionLinesChildrenTree(treeItem, childrenPG, pgList, plList); } //将该节点的权限项加入children属性中 List <PermissionLine> childrenPLList = plList.FindAll(delegate(PermissionLine pl) { return(pl.Group.Id == rootPG.Id); }); foreach (var childrenPL in childrenPLList) { PermissionLineTreeViewModel childrenTreeItem = new PermissionLineTreeViewModel(); childrenTreeItem.id = childrenPL.Id.ToString(); childrenTreeItem.text = childrenPL.DisplayName; treeItem.children.Add(childrenTreeItem); plList.Remove(childrenPL);//移除使用过的项 } viewTreeItemList.Add(treeItem); } JsonResult result = new JsonResult() { Data = new[] { new { id = 0, text = "所有权限", children = viewTreeItemList } } }; result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; return(result); } }
public SectionController(FlyDbContext flyContext) { _flyContext = flyContext; }
public FlyController(IFlyRepository flyRepo, UserManager <AppUser> userManager, FlyDbContext context) { _flyRepo = flyRepo; _userManager = userManager; _context = context; }
public JsonResult GetPermissionGroups() { string keyword = Request.Params["keyword"]; using (FlyDbContext ctx = new FlyDbContext()) { Guid platformGuid = GetPlatformId(); ctx.Configuration.ProxyCreationEnabled = false; List <PermissionGroupViewModel> viewPerGroupList = new List <PermissionGroupViewModel>(); JsonResult result = new JsonResult(); //获取combo用的数据,区别在于1级节点的_parentId设为Guid.Empty if (Request.Params["type"] == "withroot") { List <PermissionGroup> perGroupList = ctx.PermissionGroups.Where(o => o.PlatformId == platformGuid).OrderBy(p => p.SN).ToList(); foreach (PermissionGroup perg in perGroupList) { viewPerGroupList.Add(new PermissionGroupViewModel() { _parentId = (perg.ParentId == null ? Guid.Empty : perg.ParentId), ParentId = perg.ParentId.ToString(), Tag = perg.Tag, Url = perg.Url, Id = perg.Id.ToString(), DisplayName = perg.DisplayName, Headshot = perg.Headshot, SN = perg.SN }); } result = (new JsonResult() { Data = new { rows = viewPerGroupList } }); } else { if (string.IsNullOrEmpty(keyword)) { List <PermissionGroup> perGroupList = ctx.PermissionGroups.Where(o => o.PlatformId == platformGuid).OrderBy(p => p.SN).ToList(); foreach (PermissionGroup perg in perGroupList) { viewPerGroupList.Add(new PermissionGroupViewModel() { _parentId = perg.ParentId.ToString(), ParentId = perg.ParentId.ToString(), Tag = perg.Tag, Url = perg.Url, Id = perg.Id.ToString(), DisplayName = perg.DisplayName, Headshot = perg.Headshot, SN = perg.SN }); } result = (new JsonResult() { Data = new { rows = viewPerGroupList } }); } else { List <PermissionGroup> perGroupList = ctx.PermissionGroups.Where(o => o.PlatformId == platformGuid && (o.DisplayName.Contains(keyword) || o.Url.Contains(keyword) || o.Tag.Contains(keyword))).ToList(); int count = perGroupList.Count; for (int i = 0; i < count; i++) { LoopGetParent(ctx, perGroupList[i], perGroupList, platformGuid); } foreach (PermissionGroup perg in perGroupList) { viewPerGroupList.Add(new PermissionGroupViewModel() { _parentId = perg.ParentId.ToString(), ParentId = perg.ParentId.ToString(), Tag = perg.Tag, Url = perg.Url, Id = perg.Id.ToString(), DisplayName = perg.DisplayName, Headshot = perg.Headshot, SN = perg.SN }); } result = (new JsonResult() { Data = new { rows = viewPerGroupList } }); } } result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; return(result); } }
public FlyClassificationsController(FlyDbContext context) { _context = context; }