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)); }
/// <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; }
/// <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); } }
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 } } } }
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); }
/// <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); }