Beispiel #1
0
        private TreePermission GetPermissionChildren(List <TreePermission> dataList, TreePermission item)
        {
            List <TreePermission> list = new List <TreePermission>();

            for (int i = 0; i < dataList.Count; i++)
            {
                TreePermission childrenItem = dataList[i];

                if (!string.IsNullOrEmpty(childrenItem.ParentCode) && item.Code == childrenItem.ParentCode)
                {
                    childrenItem = GetPermissionChildren(dataList, childrenItem);
                    list.Add(childrenItem);
                }
            }

            if (list.Count > 0)
            {
                item.expanded = true;
                item.leaf     = false;
            }
            else
            {
                item.expanded = false;
                item.leaf     = true;
            }

            item.children = list;

            return(item);
        }
Beispiel #2
0
        /// <summary>
        /// 获得树形权限列表
        /// </summary>
        public List <TreePermission> GetTreePermissions()
        {
            List <TreePermission> dataList = dal.GetPermissions()
                                             .Select(t => new TreePermission
            {
                Code       = t.Code,
                Name       = t.Name,
                ParentCode = t.ParentCode,
                Path       = t.Path,
                SeqNo      = t.SeqNo
            }).OrderBy(t => t.SeqNo).ToList();

            List <TreePermission> list = new List <TreePermission>();

            if (dataList.Count > 0)
            {
                for (int i = 0; i < dataList.Count; i++)
                {
                    TreePermission item = dataList[i];

                    if (string.IsNullOrEmpty(item.ParentCode))
                    {
                        item = GetPermissionChildren(dataList, item);
                        list.Add(item);
                    }
                }
            }

            return(list);
        }
        public void CopyUserPermissions(CopyUserPermissions request)
        {
            if (request.Roles)
            {
                // vymazanie existujucich roli
                Db.Delete <UserRole>(e => e.D_User_Id == request.destUserId);

                // pridelenie novych roli podla sourceUsera
                //var sourceUserRoles = GetList<UserRole>(ur => ur.D_User_Id == request.sourceUserId);
                var sourceUserRoles = GetList(Db.From <UserRole>().Select(x => new { x.C_Role_Id, x.PlatnostOd }).Where(ur => ur.D_User_Id == request.sourceUserId));
                foreach (var userRole in sourceUserRoles)
                {
                    var newUserRole = new UserRole()
                    {
                        D_User_Id       = request.destUserId,
                        D_Tenant_Id     = Session.TenantIdGuid.Value,
                        C_Role_Id       = userRole.C_Role_Id,
                        Vytvoril        = Session.UserIdGuid,
                        PlatnostOd      = userRole.PlatnostOd,
                        DatumVytvorenia = DateTime.Now,
                        Zmenil          = Session.UserIdGuid,
                        DatumZmeny      = DateTime.Now,
                    };

                    Db.Insert(newUserRole);
                }
            }

            if (request.Rights)
            {
                // vymazanie existujucich prav
                Db.Delete <RightPermission>(e => e.D_User_Id == request.destUserId);

                // pridelenie novych prav podla sourceUsera
                var sourceUserRights = GetList(Db.From <RightUserView>().Select(x => new { x.C_Right_Id }).Where(ur => ur.D_User_Id == request.sourceUserId && ur.HasRight));
                foreach (var userRight in sourceUserRights)
                {
                    if (userRight.C_Right_Id != 1) // SysAdmin sa nekopiruje
                    {
                        var newUserRight = new RightPermission()
                        {
                            D_User_Id       = request.destUserId,
                            D_Tenant_Id     = Session.TenantIdGuid.Value,
                            C_Right_Id      = userRight.C_Right_Id,
                            Vytvoril        = Session.UserIdGuid,
                            DatumVytvorenia = DateTime.Now,
                            Zmenil          = Session.UserIdGuid,
                            DatumZmeny      = DateTime.Now,
                        };

                        Db.Insert(newUserRight);
                    }
                }
            }

            if (request.TreePermissions)
            {
                // vymazanie existujucich prav
                Db.Delete <TreePermission>(e => e.D_User_Id == request.destUserId);

                // pridelenie novych prav podla sourceUsera
                var sourceUserTree = GetList(Db.From <TreePermissionView>().Select(x => new { x.Pravo, x.Kod, x.C_Modul_Id }).Where(ur => ur.D_User_Id == request.sourceUserId));
                foreach (var userTree in sourceUserTree)
                {
                    var newUserTree = new TreePermission()
                    {
                        D_User_Id       = request.destUserId,
                        D_Tenant_Id     = Session.TenantIdGuid.Value,
                        Pravo           = userTree.Pravo,
                        Kod             = userTree.Kod,
                        C_Modul_Id      = userTree.C_Modul_Id,
                        DatumVytvorenia = DateTime.Now,
                        DatumZmeny      = DateTime.Now,
                        Vytvoril        = Session.UserIdGuid,
                        Zmenil          = Session.UserIdGuid
                    };

                    Db.Insert(newUserTree);
                }
            }

            if (request.ORSPermissions)
            {
                // vymazanie existujucich prav
                Db.Delete <OrsElementPermission>(e => e.D_User_Id == request.destUserId);
                Db.Delete <OrsElementTypePermission>(e => e.D_User_Id == request.destUserId);

                // pridelenie novych prav podla sourceUsera
                var sourceUserOrsEl = GetList(Db.From <OrsElementPermissionView>().Select(x => new { x.Pravo, x.C_OrsElement_Id }).Where(ur => ur.D_User_Id == request.sourceUserId));
                foreach (var userOrsEl in sourceUserOrsEl)
                {
                    var newUserOrsEl = new OrsElementPermission()
                    {
                        D_User_Id       = request.destUserId,
                        D_Tenant_Id     = Session.TenantIdGuid.Value,
                        Pravo           = userOrsEl.Pravo,
                        C_OrsElement_Id = userOrsEl.C_OrsElement_Id,
                        DatumVytvorenia = DateTime.Now,
                        DatumZmeny      = DateTime.Now,
                        Zmenil          = Session.UserIdGuid,
                        Vytvoril        = Session.UserIdGuid
                    };

                    Db.Insert(newUserOrsEl);
                }

                var sourceUserOrsType = GetList(Db.From <OrsElementTypePermissionView>().Select(x => new { x.Pravo, x.C_OrsElementType_Id }).Where(ur => ur.D_User_Id == request.sourceUserId));
                foreach (var userOrsType in sourceUserOrsType)
                {
                    var newUserOrsType = new OrsElementTypePermission()
                    {
                        D_User_Id           = request.destUserId,
                        D_Tenant_Id         = Session.TenantIdGuid.Value,
                        Pravo               = userOrsType.Pravo,
                        C_OrsElementType_Id = userOrsType.C_OrsElementType_Id,
                        DatumVytvorenia     = DateTime.Now,
                        DatumZmeny          = DateTime.Now,
                        Zmenil              = Session.UserIdGuid,
                        Vytvoril            = Session.UserIdGuid
                    };

                    Db.Insert(newUserOrsType);
                }
            }
        }