Exemplo n.º 1
0
        public UserViewQuery(BizDataContext context, T_User currentUser)
            : base(context, currentUser)
        {
            this.KeyName  = "User_ID";
            this.EntityId = 1000000002;

            DefaultOperationManager manager = new DefaultOperationManager(context, currentUser);

            this.MaxQueryPrivilege = manager.TryCanOperation(currentUser.User_ID, this.EntityId, EntityOperationEnum.Query);
        }
Exemplo n.º 2
0
        protected void btnSaveAA_Click(object sender, EventArgs e)
        {
            var dataList = RoleOfEntityControl1.GetReptBindItem();

            try
            {
                if (string.IsNullOrEmpty(this.ddlCategory.SelectedValue))
                {
                    return;
                }
                long   CategoryId = Convert.ToInt64(this.ddlCategory.SelectedValue);
                string msg        = string.Empty;
                //先清除该角色权限,然后添加当前设定的权限
                using (BizDataContext Context = new BizDataContext())
                {
                    //var moduleList = Context.Where<SysModule>(p => p.CategoryId == CategoryId).Select(p => p.ModuleId).ToList();
                    var moduleList = this.EntityCache.SysModule.Where(p => p.CategoryId == CategoryId).Select(p => p.ModuleId).ToList();

                    //var entityList = Context.Where<SysEntity>(p => p.ModuleId != null)
                    var entityList = this.EntityCache.SysEntity.Where(p => p.ModuleId != null)
                                     .Where(p => moduleList.Contains(p.ModuleId.Value))
                                     .Select(p => p.EntityId);

                    var delList = Context.Where <SysDataPrivilege>(x => x.RoleId == this.RoleId)
                                  .Where(x => entityList.Contains(x.EntityId)).ToList();
                    //delList.Clear();
                    foreach (var del in delList)
                    {
                        Context.Delete(del);
                    }

                    foreach (var add in dataList)
                    {
                        Context.Insert(new SysDataPrivilege()
                        {
                            EntityId       = add.EntityId,
                            OperationId    = (int)EntityOperationEnum.Add,
                            RoleId         = this.RoleId,
                            PrivelegeLevel = add.addRight
                        });
                        Context.Insert(new SysDataPrivilege()
                        {
                            EntityId       = add.EntityId,
                            OperationId    = (int)EntityOperationEnum.Delete,
                            RoleId         = this.RoleId,
                            PrivelegeLevel = add.delRight
                        });
                        Context.Insert(new SysDataPrivilege()
                        {
                            EntityId       = add.EntityId,
                            OperationId    = (int)EntityOperationEnum.Update,
                            RoleId         = this.RoleId,
                            PrivelegeLevel = add.updtRight
                        });
                        Context.Insert(new SysDataPrivilege()
                        {
                            EntityId       = add.EntityId,
                            OperationId    = (int)EntityOperationEnum.Query,
                            RoleId         = this.RoleId,
                            PrivelegeLevel = add.queryRight
                        });
                    }


                    //1.无权限,2.个人,3.部门,4.部门及子部门,5.全部权限
                    //循环遍历所有实体表(即父实体)
                    foreach (var reptBindItem in dataList)
                    {
                        //获取当前父实体的一对多关系
                        var sysOneMoreRelations =
                            //    Context.Where<SysOneMoreRelation>(
                            this.EntityCache.SysOneMoreRelation.Where(
                                p => p.ParentEntityId == reptBindItem.EntityId && p.IsParentChild == true);
                        //循环所有一对多关系
                        foreach (var sysOneMoreRelation in sysOneMoreRelations)
                        {
                            //sysOneMoreRelation.ChildEntity = Context.FindById<SysEntity>(sysOneMoreRelation.ChildEntityId);

                            //获取父实体的子实体的所有权限
                            var delChild =
                                Context.Where <SysDataPrivilege>(
                                    x => x.RoleId == this.RoleId && sysOneMoreRelation.ChildEntityId == x.EntityId).ToList();
                            //删除子实体的所有权限
                            foreach (var sysDataPrivilege in delChild)
                            {
                                Context.Delete(sysDataPrivilege);
                            }
                            msg += string.Format("{0}为{1}的子实体,权限随{1}的权限而改变!\\n",
                                                 sysOneMoreRelation.ChildEntity.DisplayText,
                                                 reptBindItem.DisplayText);
                            //判断子实体的授权方式
                            //1.个人类,在此情况下子实体无需担心父实体的授权方式,子实体所包含的权限(即上面5种)>=父实体所包含权限
                            //2.组织类(只含有无权限和全部权限),在此情况下需判断父实体所选择的权限(即上面5种之一),如果父实体选择无权限,子实体即无权限,否则子实体为全部权限
                            if (sysOneMoreRelation.ChildEntity.PrivilegeMode == (int)PrivilegeModel.Persional)//子实体为个人类
                            {
                                //子实体的Add权限跟随父实体的Update权限,其余权限与父实体一一对应
                                Context.Insert(new SysDataPrivilege()
                                {
                                    EntityId       = sysOneMoreRelation.ChildEntityId.Value,
                                    OperationId    = (int)EntityOperationEnum.Add,
                                    RoleId         = this.RoleId,
                                    PrivelegeLevel = reptBindItem.updtRight
                                });
                                Context.Insert(new SysDataPrivilege()
                                {
                                    EntityId       = sysOneMoreRelation.ChildEntityId.Value,
                                    OperationId    = (int)EntityOperationEnum.Delete,
                                    RoleId         = this.RoleId,
                                    PrivelegeLevel = reptBindItem.delRight
                                });
                                Context.Insert(new SysDataPrivilege()
                                {
                                    EntityId       = sysOneMoreRelation.ChildEntityId.Value,
                                    OperationId    = (int)EntityOperationEnum.Update,
                                    RoleId         = this.RoleId,
                                    PrivelegeLevel = reptBindItem.updtRight
                                });
                                Context.Insert(new SysDataPrivilege()
                                {
                                    EntityId       = sysOneMoreRelation.ChildEntityId.Value,
                                    OperationId    = (int)EntityOperationEnum.Query,
                                    RoleId         = this.RoleId,
                                    PrivelegeLevel = reptBindItem.queryRight
                                });
                            }
                            else//子实体为组织类
                            {
                                if (reptBindItem.delRight == 1)//父实体对于删除选择无权限
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Delete,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = reptBindItem.delRight
                                    });
                                }
                                else
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Delete,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = 5
                                    });
                                }
                                if (reptBindItem.updtRight == 1)//父实体对于更新选择无权限,子实体Add权限跟随父实体update权限
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Update,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = reptBindItem.updtRight
                                    });
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Add,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = reptBindItem.updtRight
                                    });
                                }
                                else
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Update,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = 5
                                    });
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Add,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = 5
                                    });
                                }
                                if (reptBindItem.queryRight == 1)//父实体对于查询选择无权限
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Query,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = reptBindItem.queryRight
                                    });
                                }
                                else
                                {
                                    Context.Insert(new SysDataPrivilege()
                                    {
                                        EntityId =
                                            sysOneMoreRelation.ChildEntityId.Value,
                                        OperationId    = (int)EntityOperationEnum.Query,
                                        RoleId         = this.RoleId,
                                        PrivelegeLevel = 5
                                    });
                                }
                            }
                        }
                    }
                }

                IOperationManager dom = new DefaultOperationManager(this.DataHelper, this.LoginUser);
                int count             = dom.ValidateSharedPrivilege();
                if (count > 0)
                {
                    msg = string.Format("{0},修改导致{1}条权限共享规则被移除", msg, count);
                }

                //清除菜单的缓存,2011-10-8 zhu min
                Session["T_Function"] = null;
                this.AjaxAlert("保存成功!\\n" + msg, "window.location.reload()");
            }
            catch (Exception ex)
            {
                this.AjaxAlert(ex);
            }
        }