// single rights without \\ public static void AppendToPermissionTree(PermissionTree tree, List <string> SingleRights) { foreach (var item in SingleRights) { if (tree.RootAccess) { return; } if (string.IsNullOrEmpty(item)) { continue; } if (tree.Children.ContainsKey(item)) { tree = tree.Children[item]; } else { // append new one... PermissionTree subtree = new PermissionTree(); tree.Children[item] = subtree; tree.Name = item; tree = subtree; } } tree.RootAccess = true; // at the }
public async Task <MessageModel <PermissionTree> > GetPermissionTree(int pid = 0, bool needbtn = false) { var data = new MessageModel <PermissionTree>(); var permissions = await _PermissionServices.Query(d => d.IsDeleted == false); var permissionTrees = (from child in permissions where child.IsDeleted == false orderby child.Id select new PermissionTree { value = child.Id, label = child.Name, Pid = child.Pid, isbtn = child.IsButton, }).ToList(); PermissionTree rootRoot = new PermissionTree(); rootRoot.value = 0; rootRoot.Pid = 0; rootRoot.label = "根节点"; RecursionHelper.LoopToAppendChildren(permissionTrees, rootRoot, pid, needbtn); data.success = true; if (data.success) { data.response = rootRoot; data.msg = "获取成功"; } return(data); }
// root/sub/subtwo public static void AppendToPermissionTree(PermissionTree tree, string FullRightString) { var spe = "/\\".ToCharArray(); var rights = FullRightString.Split(spe, StringSplitOptions.RemoveEmptyEntries); AppendToPermissionTree(tree, rights.ToList()); }
public async Task <Result <PermissionTree> > GetPermissionTree() { var permissions = await works.QueryAsync <PermMenuDto>(x => x.IsDel == 0); var permissionTrees = permissions.Where(x => x.IsDel == 0) .Select(x => new PermissionTree { value = x.Id, label = x.MenuName, Pid = x.PId, //isbtn = x.IsButton, order = x.OrdInd, }).ToList(); var rootNode = new PermissionTree { value = 0, Pid = 0, label = "根节点" }; permissionTrees = permissionTrees.OrderBy(d => d.order).ToList(); TreeHelper.LoopMenuTreeAppendChildren(permissionTrees, rootNode); return(new Result <PermissionTree> { IsSucc = true, Data = rootNode }); }
public PermissionTree ProductPermissionTree(PermissionTree obj) { #region Call API obj = WebApiLogic.GetPostComplexTypeToAPI <PermissionTree>(obj, "ProductPermissionTree", "UserManagementData"); #endregion return(obj); }
// fullrighgts like string[] of : // root/sub/sub // root/sub/subtwo public static PermissionTree GenerateTree(List <string> FullRights) { PermissionTree tree = new PermissionTree(); foreach (var item in FullRights) { AppendToPermissionTree(tree, item); } return(tree); }
private void PopulatePermissionTree() { string queryString = @"select CW.CONRTOL_NAME,INVISIBLE,DISABLED,RW.ROLE_NAME FROM CONTROLS_TO_ROLES_WFMS as CTRW inner join CONTROLS_WFMS as CW on CTRW.FK_CONTROL_NAME=CW.CONRTOL_NAME inner join ROLES_WFMS as RW on CTRW.FK_ROLE_ID=RW.ROLE_ID"; if (ByControlRB.Checked) { queryString += " order by CONRTOL_NAME"; } else { queryString += " order by ROLE_NAME"; } DataTable dt = null; DataSet ds = db.SelectRolesToControls(queryString); dt = ds.Tables[0]; PermissionTree.BeginUpdate(); PermissionTree.Nodes.Clear(); TreeNode parentNode = null; TreeNode subNode = null; string currentName = string.Empty; foreach (DataRow row in dt.Rows) { string subNodeText = ByControlRB.Checked ? row["ROLE_NAME"].ToString() : row["CONRTOL_NAME"].ToString(); subNodeText += ":"; subNodeText += Convert.ToInt32(row["INVISIBLE"]) == 0 ? " Visible " : " Not visible "; subNodeText += " and "; subNodeText += Convert.ToInt32(row["DISABLED"]) == 0 ? " Enabled " : " Disabled "; subNode = new TreeNode(subNodeText); string dataName = ByControlRB.Checked ? row["CONRTOL_NAME"].ToString() : row["ROLE_NAME"].ToString(); if (currentName != dataName) { parentNode = new TreeNode(dataName); currentName = dataName; PermissionTree.Nodes.Add(parentNode); } if (parentNode != null) { parentNode.Nodes.Add(subNode); } } PermissionTree.EndUpdate(); }
//public ActionResult PaymentTree(Guid? userId) //{ // try // { // PermissionTree obj = new PermissionTree(); // obj.objTree = new List<TreeView>(); // ViewBag.UserId = userId; // obj.objTree = _iMasFacade.PaymentPermissionTree("IMD", userId, "Payment"); // return PartialView("~/Areas/UserManagement/Views/UserManagement/PaymentModes.cshtml", obj); // } // catch (Exception ex) // { // return View("Error"); // } //} public ActionResult MenuTree(Guid?userId, string AppId = "IMD") { try { PermissionTree obj = new PermissionTree(); obj.objTree = new List <TreeView>(); ViewBag.UserId = userId; obj = WebApiLogic.GetPostComplexTypeToAPI <PermissionTree>(obj, "MenuPermissionTree", "HierarchyApi"); //_iMasFacade.MenuPermissionTree(AppId, userId, "Menu"); return(PartialView("~/Views/Hierarchy/MenuTree.cshtml", obj)); } catch (Exception ex) { return(View("Error")); } }
public ActionResult ProductTree(Guid?userId) { try { PermissionTree obj = new PermissionTree(); obj.objTree = new List <TreeView>(); ViewBag.UserId = userId; obj = WebApiLogic.GetPostComplexTypeToAPI <PermissionTree>(obj, "ProductPermissionTree", "HierarchyApi"); //obj.objTree = _iMasFacade.ProductPermissionTree("IMD", userId, "Product"); //_iMasFacade.FetchIMIENumber(obj, userId); return(PartialView("~/Views/Hierarchy/ProductTree.cshtml", obj)); } catch (Exception ex) { return(View("Error")); } }
public async Task <MessageModel <PermissionTree> > GetPermissionTree(int pid = 0, bool needbtn = false) { var data = new MessageModel <PermissionTree>(); var roleIds = (await _userRoleServices.Query(d => d.IsDeleted == false && d.UserId == _user.ID)).Select(d => d.RoleId.ObjToInt()).Distinct().ToList(); var pids = (await _roleModulePermissionServices.Query(d => d.IsDeleted == false && roleIds.Contains(d.RoleId))).Select( d => d.PermissionId.ObjToInt()).Distinct(); PermissionTree rootRoot = new PermissionTree { value = 0, Pid = 0, label = "根节点" }; if (pids.Any() || roleIds.Contains(1))//超级管理员 { IOrderedEnumerable <Permission> rolePermissionMoudles; if (roleIds.Contains(1)) { rolePermissionMoudles = (await _permissionServices.Query(d => d.IsDeleted == false)).OrderBy(c => c.OrderSort); } else { rolePermissionMoudles = (await _permissionServices.Query(d => pids.Contains(d.Id) && d.IsDeleted == false)).OrderBy(c => c.OrderSort); } var permissionTrees = (from child in rolePermissionMoudles orderby child.Id select new PermissionTree { value = child.Id, label = child.Name, Pid = child.Pid, isbtn = child.IsButton, order = child.OrderSort, }).ToList(); permissionTrees = permissionTrees.OrderBy(d => d.order).ToList(); RecursionHelper.LoopToAppendChildren(permissionTrees, rootRoot, pid, needbtn); } data.success = true; if (data.success) { data.response = rootRoot; data.msg = "获取成功"; } return(data); }
/// <summary> /// 新建用户信息 /// </summary> /// <param name="accid"></param> /// <param name="data"></param> /// <returns></returns> public override async Task CreateAsync(string accid, Account data) { using (var tx = _DbContext.Database.BeginTransaction()) { try { if (!string.IsNullOrWhiteSpace(data.DepartmentId)) { data.Department = await _DbContext.Departments.FindAsync(data.DepartmentId); } await base.CreateAsync(accid, data); var otree = new PermissionTree(); otree.Name = data.Name; //为了确保OrganizationId和Organization只赋一个导致OrganizationId被遗漏 if (!string.IsNullOrWhiteSpace(data.OrganizationId)) { otree.OrganizationId = data.OrganizationId; } if (data.Organization != null) { otree.OrganizationId = data.Organization.Id; } otree.NodeType = AppConst.S_NodeType_Account; otree.ObjId = data.Id; if (!string.IsNullOrWhiteSpace(data.DepartmentId)) { var refDepartmentNode = await _DbContext.PermissionTrees.Where(x => x.ObjId == data.DepartmentId).FirstOrDefaultAsync(); if (refDepartmentNode != null) { otree.ParentId = refDepartmentNode.Id; await _PermissionTreeRepository.AddChildNode(otree); } } tx.Commit(); } catch (Exception ex) { tx.Rollback(); throw ex; } } }
public IActionResult ParseTree(int?fid) { //找当前层级下级(如果parentId==null那就是第一级) List <Permission> permissions = userGroupBll.GetPermissionList(); List <Permission> list = permissions.Where(a => a.Fid == fid).ToList(); foreach (var item in list) { PermissionTree treeModel = new PermissionTree(); treeModel.Id = item.Pid; treeModel.text = item.Title; //递归 ParseTree(treeModel.Id); treeModels.Add(treeModel); } return(Ok(new { data = treeModels })); }
public async Task <MessageModel <PermissionTree> > GetPermissionTree(int pid = 0, bool needbtn = false) { //var data = new MessageModel<PermissionTree>(); var permissions = await _permissionServices.Query(d => d.IsDeleted == false); var permissionTrees = (from child in permissions where child.IsDeleted == false orderby child.Id select new PermissionTree { value = child.Id, label = child.Name, Pid = child.Pid, isbtn = child.IsButton, order = child.OrderSort, }).ToList(); PermissionTree rootRoot = new PermissionTree { value = 0, Pid = 0, label = "根节点" }; permissionTrees = permissionTrees.OrderBy(d => d.order).ToList(); RecursionHelper.LoopToAppendChildren(permissionTrees, rootRoot, pid, needbtn); //data.success = true; //if (data.success) //{ // data.response = rootRoot; // data.msg = "获取成功"; //} return(Success(rootRoot, "获取成功")); //return data; }
private void PopulatePermissionTree() { ConnectionStringSettingsCollection connectionStrings = ConfigurationManager.ConnectionStrings; string connString = connectionStrings[ "ControlBasedSecurity.Properties.Settings.ControlSecurityConnectionString"]. ToString(); SqlConnection conn = new SqlConnection(connString); conn.Open(); string queryString = "select controlID, Invisible, Disabled, RoleName " + "from ControlsToRoles ctr " + " join controls c on c.ControlID = ctr.FKControlID and c.Page = ctr.FKPage " + " join roles r on r.RoleID = ctr.FKRole "; if (ByControlRB.Checked) { queryString += " order by ControlID"; } else { queryString += " order by RoleName"; } DataSet ds = new DataSet(); SqlDataAdapter dataAdapter = null; DataTable dt = null; try { dataAdapter = new SqlDataAdapter(queryString, conn); dataAdapter.Fill(ds, "controlsToRoles"); dt = ds.Tables[0]; } catch (Exception e) { MessageBox.Show("Unable to retrieve permissions: " + e.Message, "Error retrieving permissions", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { conn.Close(); } PermissionTree.BeginUpdate(); PermissionTree.Nodes.Clear(); TreeNode parentNode = null; TreeNode subNode = null; string currentName = string.Empty; foreach (DataRow row in dt.Rows) { string subNodeText = ByControlRB.Checked ? row["RoleName"].ToString() : row["ControlID"].ToString(); subNodeText += ":"; subNodeText += Convert.ToInt32(row["Invisible"]) == 0 ? " visible " : " not visible "; subNodeText += " and "; subNodeText += Convert.ToInt32(row["Disabled"]) == 0 ? " enabled " : " disabled "; subNode = new TreeNode(subNodeText); string dataName = ByControlRB.Checked ? row["ControlID"].ToString() : row["RoleName"].ToString(); if (currentName != dataName) { parentNode = new TreeNode(dataName); currentName = dataName; PermissionTree.Nodes.Add(parentNode); } if (parentNode != null) { parentNode.Nodes.Add(subNode); } } PermissionTree.EndUpdate(); }
public PermissionTree MenuPermissionTree(PermissionTree obj) { return(objUserManagementBusiness.MenuPermissionTree(obj)); }
public PermissionTree ProductPermissionTree(PermissionTree obj) { return(objUserManagementBusiness.ProductPermissionTree(obj)); }
private void PopulatePermissionTree() { string queryString = "select ctr .fkpage, controlID, Invisible, Disabled, RoleName,ContenedorPeqMineria,ContenedorZandor,ContenedorOtros " + "from ControlsToRoles ctr " + " join controls c on c.ControlID = ctr.FKControlID and c.Page = ctr.FKPage " + " join roles r on r.RoleID = ctr.FKRole "; if (ByControlRB.Checked) { queryString += " order by ControlID"; } else { queryString += " order by RoleName"; } DataTable dt = null; try { dt = GuardarDatos.GetRoles(queryString); } catch (Exception e) { MessageBox.Show("Incapaz de recuperar permisos: " + e.Message, "Error al recuperar permisos", MessageBoxButtons.OK, MessageBoxIcon.Error); } PermissionTree.BeginUpdate(); PermissionTree.Nodes.Clear(); TreeNode parentNode = null; TreeNode subNode = null; string currentName = string.Empty; foreach (DataRow row in dt.Rows) { string subNodeText = String.Concat(" Formulario: ", row["fkpage"].ToString(), "-", (ByControlRB.Checked ? row["RoleName"].ToString() : row["ControlID"].ToString())); subNodeText += ":"; subNodeText += Convert.ToInt32(row["Invisible"]) == 0 ? " visible " : " no visible "; subNodeText += ", "; subNodeText += Convert.ToInt32(row["Disabled"]) == 0 ? " Activo " : " Inactivo "; if (workingForm != null && workingForm.Name.Trim().ToUpper().Contains("FRM_MUESTREOPM")) { if (!String.IsNullOrEmpty(row["ContenedorPeqMineria"].ToString().Trim())) { subNodeText += ", "; subNodeText += Convert.ToInt32(row["ContenedorPeqMineria"]) == 0 ? " No Grabar Peq Min " : " Grabar Peq Min"; subNodeText += ", "; subNodeText += Convert.ToInt32(row["ContenedorZandor"]) == 0 ? " No Grabar Cont Zandor" : " Grabar Cont Zandor"; subNodeText += ", "; subNodeText += Convert.ToInt32(row["ContenedorOtros"]) == 0 ? " No Grabar Cont Otros" : " Grabar Cont Otros"; } } subNode = new TreeNode(subNodeText); string dataName = ByControlRB.Checked ? row["ControlID"].ToString() : row["RoleName"].ToString(); if (currentName != dataName) { parentNode = new TreeNode(dataName); currentName = dataName; PermissionTree.Nodes.Add(parentNode); } if (parentNode != null) { parentNode.Nodes.Add(subNode); } } PermissionTree.EndUpdate(); }
public PermissionTree ProductPermissionTree(PermissionTree obj) { obj.objTree = objUserManagementLogic.ProductPermissionTree("IMD", obj.UserID, "Product"); return(obj); }
public PermissionTree MenuPermissionTree(PermissionTree obj) { obj.objTree = objUserManagementLogic.MenuPermissionTree("IMD", obj.UserID, "Menu"); return(obj); }
/// <summary> /// 新建组织信息 /// </summary> /// <param name="accid"></param> /// <param name="data"></param> /// <returns></returns> public override async Task CreateAsync(string accid, Organization data) { var currentAcc = await _DbContext.Accounts.FindAsync(accid); var bCreateDefaultResource = false; using (var tx = _DbContext.Database.BeginTransaction()) { try { if (data.OrganizationTypeId == AppConst.OrganType_Partner || data.OrganizationTypeId == AppConst.OrganType_Supplier) { data.ParentId = currentAcc.OrganizationId; } await base.CreateAsync(accid, data); var otree = new PermissionTree(); otree.Id = GuidGen.NewGUID(); otree.Name = data.Name; otree.OrganizationId = data.Id; otree.NodeType = AppConst.S_NodeType_Organization; otree.ObjId = data.Id; if (string.IsNullOrWhiteSpace(data.ParentId)) { await _PermissionTreeRepository.AddNewNode(otree); bCreateDefaultResource = true; } else { var parentOrganNode = _DbContext.PermissionTrees.Where(x => x.ObjId == data.ParentId).FirstOrDefault(); if (parentOrganNode != null) { otree.ParentId = parentOrganNode.Id; otree.OrganizationId = data.ParentId; await _PermissionTreeRepository.AddChildNode(otree); bCreateDefaultResource = true; } } tx.Commit(); } catch (Exception ex) { tx.Rollback(); throw ex;//抛出异常让middleware捕获 } } if (bCreateDefaultResource) { #region 创建默认部门 //var department = new Department(); //department.OrganizationId = data.Id; //department.Organization = data; //department.Name = data.Name; //await _DepartmentRep.CreateAsync(accid, department); #endregion #region 创建默认管理员 var account = new Account(); if (data.OrganizationTypeId == AppConst.OrganType_Brand) { account.Type = AppConst.AccountType_BrandAdmin; } else if (data.OrganizationTypeId == AppConst.OrganType_Partner) { account.Type = AppConst.AccountType_PartnerAdmin; } else if (data.OrganizationTypeId == AppConst.OrganType_Supplier) { account.Type = AppConst.AccountType_SupplierAdmin; } else { } account.Name = "管理员"; account.Mail = GuidGen.NewGUID(); account.Password = ConstVar.DefaultNormalPasswordMd5; account.Location = data.Location; account.ExpireTime = DateTime.Now.AddYears(10); account.ActivationTime = DateTime.UtcNow; //account.Department = department; //account.DepartmentId = department.Id; account.Organization = data; account.OrganizationId = data.Id; await _AccountRep.CreateAsync(accid, account); //将创建人和修改人改为该默认管理员 account.Creator = account.Id; account.Modifier = account.Id; _DbContext.Accounts.Update(account); data.OwnerId = account.Id; _DbContext.Organizations.Update(data); await _DbContext.SaveChangesAsync(); #endregion } }
/// <summary> /// 菜单树 /// </summary> /// <param name="lstAllNode"></param> /// <param name="curNode"></param> public static void LoopMenuTreeAppendChildren(List <PermissionTree> lstAllNode, PermissionTree curNode) { var lstChildNodes = lstAllNode.Where(x => x.Pid == curNode.value).ToList(); if (lstChildNodes.Count > 0) { curNode.children = new List <PermissionTree>(); curNode.children.AddRange(lstChildNodes); } else { curNode.children = null; } foreach (var childNode in lstChildNodes) { LoopMenuTreeAppendChildren(lstAllNode, childNode); } }