erp11--用户权限管理

Posted 六叔的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了erp11--用户权限管理相关的知识,希望对你有一定的参考价值。

一、原理:
用户-----角色-----菜单
每个用户对应多个角色,每个角色又对应多个菜单,可以从用户的id就可以知道要显示哪些菜单在页面了

1、角色菜单设置:
 
前端:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>角色权限设置</title>
  6. <link rel="stylesheet" type="text/css" href="ui/themes/default/easyui.css">
  7. <link rel="stylesheet" type="text/css" href="ui/themes/icon.css">
  8. <script type="text/javascript" src="ui/jquery.min.js"></script>
  9. <script type="text/javascript" src="ui/jquery.easyui.min.js"></script>
  10. <script type="text/javascript" src="ui/locale/easyui-lang-zh_CN.js"></script>
  11. <script type="text/javascript" src="ui/jquery.serializejson.min.js"></script>
  12. <script type="text/javascript">
  13. var selectId=1;//选择角色ID
  14. $(function(){
  15. $(\'#tree\').tree({
  16. url:\'role_readRoleMenus.action?id=1\',
  17. animate:true,
  18. checkbox:true
  19. });
  20. $("#saveBtn").bind("click",function(){
  21. var nodes=$("#tree").tree("getChecked");
  22. var nodesStr="";
  23. for(var i=0;i<nodes.length;i++){
  24. if(i==nodes.length-1){
  25. nodesStr+=nodes[i].id;
  26. }else{
  27. nodesStr+=nodes[i].id+",";
  28. }
  29. }
  30. $.ajax({
  31. url:\'role_updateRoleMenu.action\',
  32. type:"post",
  33. data:{"id":selectId,"nodesStr":nodesStr},
  34. dataType:\'json\',
  35. success:function(data){
  36. $.messager.alert("提示",data.message);
  37. }
  38. })
  39. })
  40. })
  41. var onclick=function(rowIndex,rowData){
  42. selectId=rowData.uuid;
  43. $("#tree").tree({
  44. url:\'role_readRoleMenus.action?id=\'+selectId,
  45. animate:true,
  46. checkbox:true
  47. });
  48. }
  49. </script>
  50. </head>
  51. <body class="easyui-layout">
  52. <div data-options="region:\'west\',title:\'角色选择\',split:true" style="width:500px;">
  53. <table class="easyui-datagrid" style="width:500px;height:650px"
  54. data-options="url:\'role_list\',fitColumns:true,singleSelect:true,onClickRow:onclick">
  55. <thead>
  56. <tr>
  57. <th data-options="field:\'uuid\',width:100">编号</th>
  58. <th data-options="field:\'name\',width:100">角色名称</th>
  59. </tr>
  60. </thead>
  61. </table>
  62. </div>
  63. <div data-options="region:\'center\',title:\'权限选择\'" style="padding:5px;background:#eee;">
  64. <ul id="tree"></ul>
  65. <button id="saveBtn" >保存</button>
  66. </div>
  67. </body>
  68. </html>

action:
  1. List<Tree> list = roleBiz.readRoleMenus(getId());
  2. write(JSON.toJSONString(list,true));
  3. }
  4. public void updateRoleMenu(){
  5. try {
  6. roleBiz.updateRoleMenu(getId(),nodesStr);
  7. write(ajaxReturn(true, "设置成功"));
  8. } catch (Exception e) {
  9. e.printStackTrace();
  10. write(ajaxReturn(false, "设置失败"));
  11. }
  12. }


biz:
  1. /**
  2. * 根据角色显示菜单树形数据
  3. */
  4. public List<Tree> readRoleMenus(Long id){
  5. Role role = roleDao.get(id);
  6. // 获取此角色下的所有菜单
  7. List<Menu> menus = role.getMenus();
  8. // 组装一个List<Tree>]
  9. List<Tree> trees = new ArrayList<Tree>();
  10. // 获取所有的菜单数据
  11. Menu menu = menuDao.get("0"); //菜单的根节点
  12. for(Menu menu1:menu.getMenus() ){ //一级菜单数据
  13. Tree tree1 = new Tree();
  14. tree1.setId(menu1.getMenuid());
  15. tree1.setText(menu1.getMenuname());
  16. for(Menu menu2:menu1.getMenus()){//二级菜单数据
  17. Tree tree2 = new Tree();
  18. tree2.setId(menu2.getMenuid());
  19. // 当前角色有此权限菜单时需要勾选
  20. if(menus.contains(menu2)){
  21. tree2.setChecked(true);
  22. }
  23. tree2.setText(menu2.getMenuname());
  24. tree1.getChildren().add(tree2); //注意:在Tree 中的getChildren方法中做了非空判断
  25. }
  26. trees.add(tree1);
  27. }
  28. return trees;
  29. }
  30. /**
  31. * 设置角色权限
  32. */
  33. public void updateRoleMenu(Long id, String nodesStr) {
  34. // 把传过来的数据保存到role_menu表中
  35. // 1、获取角色
  36. Role role = roleDao.get(id);
  37. // 2、原来角色下的菜单数据清空
  38. role.setMenus(new ArrayList<Menu>());
  39. // 3、重新把角色权限数据保存
  40. String[] nodes = nodesStr.split(",");
  41. for (String string : nodes) {
  42. Menu menu = menuDao.get(string);
  43. role.getMenus().add(menu);
  44. }
  45. }


2、用户角色控制:

 
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>用户角色设置</title>
  6. <link rel="stylesheet" type="text/css" href="ui/themes/default/easyui.css">
  7. <link rel="stylesheet" type="text/css" href="ui/themes/icon.css">
  8. <script type="text/javascript" src="ui/jquery.min.js"></script>
  9. <script type="text/javascript" src="ui/jquery.easyui.min.js"></script>
  10. <script type="text/javascript" src="ui/locale/easyui-lang-zh_CN.js"></script>
  11. <script type="text/javascript" src="ui/jquery.serializejson.min.js"></script>
  12. <script type="text/javascript">
  13. var selectId=1;//选择角色ID
  14. $(function(){
  15. $(\'#tree\').tree({
  16. url:\'emp_readEmpRoles.action?id=1\',
  17. animate:true,
  18. checkbox:true
  19. });
  20. $("#saveBtn").bind("click",function(){
  21. var nodes=$("#tree").tree("getChecked");
  22. var nodesStr="";
  23. for(var i=0;i<nodes.length;i++){
  24. if(i==nodes.length-1){
  25. nodesStr+=nodes[i].id;
  26. }else{
  27. nodesStr+=nodes[i].id+",";
  28. }
  29. }
  30. $.ajax({
  31. url:\'emp_updateEmpRole.action\',
  32. type:"post",
  33. data:{"id":selectId,"nodesStr":nodesStr},
  34. dataType:\'json\',
  35. success:function(data){
  36. $.messager.alert("提示",data.message);
  37. }
  38. })
  39. })
  40. })
  41. var onclick=function(rowIndex,rowData){
  42. selectId=rowData.uuid;
  43. $("#tree").tree({
  44. url:\'emp_readEmpRoles.action?id=\'+selectId,
  45. animate:true,
  46. checkbox:true
  47. });
  48. }
  49. </script>
  50. </head>
  51. <body class="easyui-layout">
  52. <div data-options="region:\'west\',title:\'用户选择\',split:true" style="width:500px;">
  53. <table class="easyui-datagrid" style="width:500px;height:650px"
  54. data-options="url:\'emp_list\',fitColumns:true,singleSelect:true,onClickRow:onclick">
  55. <thead>
  56. <tr>
  57. <th data-options="field:\'uuid\',width:100">编号</th>
  58. <th data-options="field:\'name\',width:100">用户名称</th>
  59. </tr>
  60. </thead>
  61. </table>
  62. </div>
  63. <div data-options="region:\'center\',title:\'角色选择\'" style="padding:5px;background:#eee;">
  64. <ul id="tree"></ul>
  65. <button id="saveBtn" >保存</button>
  66. </div>
  67. </body>
  68. </html>

biz:
  1. @Override
  2. public List<Tree> readEmpRoles(Long id) {
  3. Emp emp = empDao.get(id);
  4. List<Role> roles = emp.getRoles();
  5. List<Tree> list1=new ArrayList<>();
  6. List<Role> list= roleDao.getList(null, null, null);
  7. for (Role role1 : list) {
  8. Tree tree1 = new Tree();
  9. tree1.setText(role1.getName());
  10. tree1.setId(role1.getUuid()+"");
  11. if (roles.contains(role1)) {
  12. tree1.setChecked(true);
  13. }
  14. list1.add(tree1);
  15. }
  16. return list1;
  17. }
  18. @Override
  19. public void updateEmpRole(Long id, String nodesStr) {
  20. String[] splits = nodesStr.split(",");
  21. Emp emp = empDao.get(id);
  22. emp.setRoles(new ArrayList<Role>());
  23. for (String roleuuid : splits) {
  24. Role role = roleDao.get(Long.parseLong(roleuuid));
  25. emp.getRoles().add(role);
  26. }
  27. }




3、登录用户的权限(菜单)显示:
biz:
  1. public Menu getMenuByEmpuuid(Long empuuid){
  2. List<Menu> list = menuDao.getMenuListByEmpuuid(empuuid);
  3. Menu menu = menuDao.get("0");
  4. List<Menu> removeList1 = new ArrayList<Menu>(); //需要删除的一级菜单
  5. List<Menu> removeList2 = null; //每个一级菜单中需要删除的二级菜单
  6. for(Menu menu1 : menu.getMenus()){
  7. removeList2 = new ArrayList<Menu>();
  8. for(Menu menu2 : menu1.getMenus()){ //二级菜单
  9. if(!list.contains(menu2)){
  10. removeList2.add(menu2);
  11. // menu1.getMenus().remove
  12. //把需要删除的先准备到一个list集合中
  13. }
  14. }
  15. menu1.getMenus().removeAll(removeList2); //把准备删除的数据 删除
  16. // 判断一级菜单下的二级菜单是否已经被全部删除
  17. if(menu1.getMenus().size<

    以上是关于erp11--用户权限管理的主要内容,如果未能解决你的问题,请参考以下文章

    Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

    ERP权限设置

    Oracle-常用数据库对象笔记(片段)

    如何设计ERP系统 的数据权限??

    瑞友天翼发布ERP虚拟程序

    OA和ERP有啥区别?