Esempio n. 1
0
        public JsonResult UpdatePrivilege(string sysId, PrivilegeMaster privilegeMaster, string menus)
        {
            string[] menuIds  = menus.Split(',');
            string   userName = userService.UserRepository.GetModel(UserData.SysId).UserInfo.RealName;
            bool     result   = privilegeService.SetMenuPrivilege(sysId, privilegeMaster, menuIds, userName);

            if (result)
            {
                /*Logger.LogMsg(
                 *  LogLevel.Info,
                 *  string.Format(
                 *      "根据用户或者角色SysId重新配置权限,sysId:{0},privilegeMaster:{1},menus:{2} 成功",
                 *      sysId,
                 *      privilegeMaster,
                 *      menus),
                 *  UserData.SysId,
                 *  UserData.UserName,
                 *  "RestApi->UpdatePrivilege");*/
                return(Json(true, JsonRequestBehavior.AllowGet));
            }

            /*  Logger.LogMsg(
             *      LogLevel.Error,
             *      string.Format(
             *          "根据用户或者角色SysId重新配置权限,sysId:{0},privilegeMaster:{1},menus:{2} 失败",
             *          sysId,
             *          privilegeMaster,
             *          menus),
             *      UserData.SysId,
             *      UserData.UserName,
             *      "RestApi->UpdatePrivilege");*/

            return(Json(false, JsonRequestBehavior.AllowGet));
        }
        public int DeleteSysPrivilegeByMaster(string sysId, PrivilegeMaster master, IDbTransaction trans)
        {
            var p = new DynamicParameters();

            p.Add(Constant.ColumnSysPrivilegePrivilegeMaster, (int)master);
            p.Add(Constant.ColumnSysPrivilegePrivilegeMasterKey, sysId.Trim());

            return
                (base.DeleteByWhere(
                     string.Format("{1}={0}{1} and {2}={0}{2}", Constant.SqlReplaceParameterPrefix, Constant.ColumnSysPrivilegePrivilegeMaster, Constant.ColumnSysPrivilegePrivilegeMasterKey), trans, p));
        }
Esempio n. 3
0
        /// <summary>
        /// 根据用户id和菜单id获取当前菜单可用按钮
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="menuId"></param>
        /// <param name="master"></param>
        /// <param name="buttons"></param>
        /// <param name="privileges"></param>
        /// <returns></returns>
        public IEnumerable<SysButton> GetButtonsPrivilegeByUserAndMenu(string userId, string menuId, PrivilegeMaster master,
                                                                              IEnumerable<SysButton> buttons, IEnumerable<SysPrivilege> privileges)
        {
            privileges = privileges.Where(x => x.PrivilegeAccess == PrivilegeAccess.Button && x.PrivilegeOperation == PrivilegeOperation.Disable);

            var resultButtons=buttons.Where(x => x.MenuId == menuId).ToList();

            List<SysButton> disableButtons = new List<SysButton>();
            foreach (SysPrivilege sysPrivilege in privileges)
            {
                var bts = buttons.Where(x => x.SysId == sysPrivilege.PrivilegeAccessKey);

                disableButtons.AddRange(bts);
            }
            //foreach (SysButton bt in disableButtons)
            //{
            //    resultButtons.Remove(bt);
            //}
            resultButtons = resultButtons.Where(x => (!disableButtons.Contains(x)) && x.IsVisible == (long)PrivilegeOperation.Enable).ToList();
            return resultButtons;
        }
Esempio n. 4
0
        /// <summary>
        /// 根据权限拥有者类别ID重新设定权限
        /// </summary>
        /// <param name="sysId"></param>
        /// <param name="privilegeMaster"></param>
        /// <param name="IDs">包括菜单、按钮编号</param>
        /// <param name="userName">当前操作用户</param>
        /// <returns></returns>
        public bool SetMenuPrivilege(string sysId, PrivilegeMaster privilegeMaster, string[] IDs, string userName)
        {
            //获取所有菜单
            IEnumerable <SysMenu> allMenus = menuRepository.GetList();
            //获取所有按钮
            IEnumerable <SysButton> allButtons = buttonRepository.GetList();

            //存储传入的menuId集合
            List <string> menus = (from menu in allMenus where IDs.Contains(menu.SysId) select menu.SysId).ToList();

            //存储传入的buttonId集合
            List <string> buttons = (from button in allButtons where IDs.Contains(button.SysId) select button.SysId).ToList();

            using (IDbTransaction tran = privilegeRepository.Connection.BeginTransaction())
            {
                //根据用户ID获取原来用户可用菜单
                //用于和现在选中的菜单进行判断,是否屏蔽原来可用菜单
                IEnumerable <SysMenu> userMenus = ServiceFactory.MenuService.GetPrivilegedSysMenuByUserId(sysId);

                this.privilegeRepository.DeleteSysPrivilegeByMaster(sysId, privilegeMaster, tran);

                #region 如果是用户权限,先将用户和角色的权限进行对比,将用户禁用而角色启用的菜单和按钮设置为禁用
                if (privilegeMaster == PrivilegeMaster.User)
                {
                    #region 设置菜单禁用
                    foreach (SysMenu userMenu in userMenus)
                    {
                        if (!menus.Contains(userMenu.SysId))
                        {
                            SysPrivilege sysPrivilege = new SysPrivilege
                            {
                                PrivilegeAccess    = PrivilegeAccess.Menu,
                                PrivilegeAccessKey = userMenu.SysId,
                                PrivilegeMaster    = privilegeMaster,
                                PrivilegeMasterKey = sysId,
                                PrivilegeOperation = PrivilegeOperation.Disable,
                                RecordStatus       = string.Format("创建时间:{0},创建人:{1}", DateTime.Now, userName)
                            };

                            int addResult = privilegeRepository.Add(sysPrivilege, tran);

                            if (addResult == 0)
                            {
                                tran.Rollback();
                                return(false);
                            }

                            #region 设置按钮禁用
                            if (userMenu.Buttons != null)
                            {
                                foreach (SysButton button in userMenu.Buttons)
                                {
                                    if (!buttons.Contains(button.SysId))
                                    {
                                        SysPrivilege sysPrivilegeBt = new SysPrivilege
                                        {
                                            PrivilegeAccess    = PrivilegeAccess.Button,
                                            PrivilegeAccessKey = button.SysId,
                                            PrivilegeMaster    = privilegeMaster,
                                            PrivilegeMasterKey = sysId,
                                            PrivilegeOperation = PrivilegeOperation.Disable,
                                            RecordStatus       = string.Format("创建时间:{0},创建人:{1}", DateTime.Now, userName)
                                        };

                                        addResult = privilegeRepository.Add(sysPrivilege, tran);

                                        if (addResult == 0)
                                        {
                                            tran.Rollback();
                                            return(false);
                                        }
                                    }
                                }
                            }
                            #endregion
                        }
                    }
                    #endregion
                }
                #endregion

                #region 角色权限,只存储可用菜单,不进行和现在选中菜单判断
                foreach (string menu in menus)
                {
                    SysPrivilege sysPrivilege = new SysPrivilege
                    {
                        PrivilegeAccess    = PrivilegeAccess.Menu,
                        PrivilegeAccessKey = menu,
                        PrivilegeMaster    = privilegeMaster,
                        PrivilegeMasterKey = sysId,
                        PrivilegeOperation = PrivilegeOperation.Enable,
                        RecordStatus       = string.Format("创建时间:{0},创建人:{1}", DateTime.Now, userName)
                    };

                    int addResult = privilegeRepository.Add(sysPrivilege, tran);

                    if (addResult == 0)
                    {
                        tran.Rollback();
                        return(false);
                    }

                    #region 存储菜单下不可用按钮

                    var menuBts = allButtons.Where(x => x.MenuId == menu);

                    menuBts = menuBts.Where(x => (!buttons.Contains(x.SysId)));
                    foreach (SysButton sysButton in menuBts)
                    {
                        sysPrivilege = new SysPrivilege
                        {
                            PrivilegeAccess    = PrivilegeAccess.Button,
                            PrivilegeAccessKey = sysButton.SysId,
                            PrivilegeMaster    = privilegeMaster,
                            PrivilegeMasterKey = sysId,
                            PrivilegeOperation = PrivilegeOperation.Disable,
                            RecordStatus       = string.Format("创建时间:{0},创建人:{1}", DateTime.Now, userName)
                        };

                        addResult = privilegeRepository.Add(sysPrivilege, tran);

                        if (addResult == 0)
                        {
                            tran.Rollback();
                            return(false);
                        }
                    }

                    #endregion
                }
                #endregion

                tran.Commit();
                return(true);
            }
        }
Esempio n. 5
0
        public void InitData <T>(IEnumerable <T> lstSource, PrivilegeMaster master) where T : EntityBase
        {
            //获取现在已有的菜单、按钮数据。在将按钮添加到菜单属性中。
            var lstMenu = this.menuRepository.GetList();

            foreach (var sysMenu in lstMenu)
            {
                sysMenu.Buttons = this.menuRepository.GetButtons(sysMenu.SysId);
            }

            foreach (var source in lstSource)
            {
                foreach (var sysMenu in lstMenu)
                {
                    var model = new SysPrivilege
                    {
                        PrivilegeMaster    = master,
                        PrivilegeMasterKey = source.SysId,
                        PrivilegeAccess    = PrivilegeAccess.Menu,
                        PrivilegeAccessKey = sysMenu.SysId,
                        PrivilegeOperation = PrivilegeOperation.Disable,
                        RecordStatus       = string.Format("创建时间:{0},创建人:{1}", DateTime.Now.ToString(CultureInfo.InvariantCulture), "System")
                    };

                    #region 检查该条数据是否存在
                    var p = new DynamicParameters();
                    p.Add("PrivilegeMaster", (int)master);
                    p.Add("PrivilegeMasterKey", source.SysId.Trim());
                    p.Add("PrivilegeAccess", (int)PrivilegeAccess.Menu);
                    p.Add("PrivilegeAccessKey", sysMenu.SysId.Trim());

                    var chkResult = privilegeRepository.GetList <int>(Constant.SqlCount,
                                                                      Constant.SqlExistsSysPrivilegeWhere, p);

                    if (chkResult.FirstOrDefault() == 0)
                    {
                        Console.WriteLine(privilegeRepository.Add(model));
                    }

                    #endregion

                    foreach (var sysButton in sysMenu.Buttons)
                    {
                        model = new SysPrivilege
                        {
                            PrivilegeMaster    = master,
                            PrivilegeMasterKey = source.SysId,
                            PrivilegeAccess    = PrivilegeAccess.Button,
                            PrivilegeAccessKey = sysButton.SysId,
                            PrivilegeOperation = PrivilegeOperation.Disable,
                            RecordStatus       = string.Format("创建时间:{0},创建人:{1}", DateTime.Now.ToString(CultureInfo.InvariantCulture), "System")
                        };

                        #region 检查该条数据是否存在

                        p = new DynamicParameters();
                        p.Add("PrivilegeMaster", (int)master);
                        p.Add("PrivilegeMasterKey", source.SysId.Trim());
                        p.Add("PrivilegeAccess", (int)PrivilegeAccess.Button);
                        p.Add("PrivilegeAccessKey", sysButton.SysId.Trim());
                        chkResult = privilegeRepository.GetList <int>(Constant.SqlCount,
                                                                      Constant.SqlExistsSysPrivilegeWhere, p);

                        if (chkResult.FirstOrDefault() == 0)
                        {
                            Console.WriteLine(privilegeRepository.Add(model));
                        }

                        #endregion
                    }
                }
            }
        }
Esempio n. 6
0
        public JsonResult UpdatePrivilege(string sysId, PrivilegeMaster privilegeMaster, string menus)
        {
            string[] menuIds = menus.Split(',');
            string userName = userService.UserRepository.GetModel(UserData.SysId).UserInfo.RealName;
            bool result = privilegeService.SetMenuPrivilege(sysId, privilegeMaster, menuIds, userName);

            if (result)
            {
                /*Logger.LogMsg(
                    LogLevel.Info,
                    string.Format(
                        "根据用户或者角色SysId重新配置权限,sysId:{0},privilegeMaster:{1},menus:{2} 成功",
                        sysId,
                        privilegeMaster,
                        menus),
                    UserData.SysId,
                    UserData.UserName,
                    "RestApi->UpdatePrivilege");*/
                return Json(true, JsonRequestBehavior.AllowGet);
            }
              /*  Logger.LogMsg(
                  LogLevel.Error,
                  string.Format(
                      "根据用户或者角色SysId重新配置权限,sysId:{0},privilegeMaster:{1},menus:{2} 失败",
                      sysId,
                      privilegeMaster,
                      menus),
                  UserData.SysId,
                  UserData.UserName,
                  "RestApi->UpdatePrivilege");*/

            return Json(false, JsonRequestBehavior.AllowGet);
        }
Esempio n. 7
0
        /// <summary>
        /// 根据用户id和菜单id获取当前菜单可用按钮
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="menuId"></param>
        /// <param name="master"></param>
        /// <param name="buttons"></param>
        /// <param name="privileges"></param>
        /// <returns></returns>
        public IEnumerable <SysButton> GetButtonsPrivilegeByUserAndMenu(string userId, string menuId, PrivilegeMaster master,
                                                                        IEnumerable <SysButton> buttons, IEnumerable <SysPrivilege> privileges)
        {
            privileges = privileges.Where(x => x.PrivilegeAccess == PrivilegeAccess.Button && x.PrivilegeOperation == PrivilegeOperation.Disable);

            var resultButtons = buttons.Where(x => x.MenuId == menuId).ToList();

            List <SysButton> disableButtons = new List <SysButton>();

            foreach (SysPrivilege sysPrivilege in privileges)
            {
                var bts = buttons.Where(x => x.SysId == sysPrivilege.PrivilegeAccessKey);

                disableButtons.AddRange(bts);
            }
            //foreach (SysButton bt in disableButtons)
            //{
            //    resultButtons.Remove(bt);
            //}
            resultButtons = resultButtons.Where(x => (!disableButtons.Contains(x)) && x.IsVisible == (long)PrivilegeOperation.Enable).ToList();
            return(resultButtons);
        }