Exemple #1
0
        // 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);
        }
Exemple #3
0
        // 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());
        }
Exemple #4
0
        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
            });
        }
Exemple #5
0
 public PermissionTree ProductPermissionTree(PermissionTree obj)
 {
     #region Call API
     obj = WebApiLogic.GetPostComplexTypeToAPI <PermissionTree>(obj, "ProductPermissionTree", "UserManagementData");
     #endregion
     return(obj);
 }
Exemple #6
0
        // 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);
        }
Exemple #7
0
        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();
        }
Exemple #8
0
        //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"));
            }
        }
Exemple #9
0
 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"));
     }
 }
Exemple #10
0
        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);
        }
Exemple #11
0
        /// <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;
                }
            }
        }
Exemple #12
0
        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 }));
        }
Exemple #13
0
        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();
        }
Exemple #15
0
 public PermissionTree MenuPermissionTree(PermissionTree obj)
 {
     return(objUserManagementBusiness.MenuPermissionTree(obj));
 }
Exemple #16
0
 public PermissionTree ProductPermissionTree(PermissionTree obj)
 {
     return(objUserManagementBusiness.ProductPermissionTree(obj));
 }
Exemple #17
0
        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();
        }
Exemple #18
0
 public PermissionTree ProductPermissionTree(PermissionTree obj)
 {
     obj.objTree = objUserManagementLogic.ProductPermissionTree("IMD", obj.UserID, "Product");
     return(obj);
 }
Exemple #19
0
 public PermissionTree MenuPermissionTree(PermissionTree obj)
 {
     obj.objTree = objUserManagementLogic.MenuPermissionTree("IMD", obj.UserID, "Menu");
     return(obj);
 }
Exemple #20
0
        /// <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
            }
        }
Exemple #21
0
        /// <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);
            }
        }