前面虽然省略了几个模块,今天要说的这个模块我觉得不能省略,角色功能授权是该系统的关键模块,这个模块难度也不大主要操作的表为m_menu,m_roleanth和m_role.简单来说就是给角色分配对应的一级菜单,例如系统管理员可以看到所有的一级菜单普通管理员只能看到部分的一级菜单。估计真正的开发比这个还要复杂一点但是原理应该是一样的,来看看我怎么弄的吧

1.点击角色列表里的授权进入角色授权页面

2.点击授权后的控制器处理代码

function assignModuleUI(){$smart=new Smarty();$smart->left_delimiter="<{";$smart->right_delimiter="}>";$menuManager=new TopMenuManagerImpl();//查询未授权菜单$allMenu=$menuManager->getNoPowerMenu($_GET["id"]);//查询已授权的一级菜单$powerMenu=$menuManager->getPowerMenu($_GET["id"]);$smart->assign("noPowerMenu",$allMenu);$smart->assign("powerMenu",$powerMenu);$smart->assign("roleId",$_GET["id"]);$smart->display("assignModule.tpl");
}

这里查询了2次数据库,因为授权也像修改操作一样可以进行多次授权所以要显示出已经授权的模块和未授权的模块,已授权的为选中状态

下面是getNoPowerMenu方法和getPowerMenu方法

 //查询全部一级菜单用于功能授权public function getNoPowerMenu($id){$db=new DBUtil();$conn=$db->getConnection();$base=new BaseDBOperate();$sql="select A.* from m_menu A where A.parentmenu='-1' and A.id not in(select menu from m_roleauth where role=$id)";$arr=$base->query($sql, $conn);$db->close($conn);return $arr;}
//查询角色已授权的模块public function getPowerMenu($id){$db=new DBUtil();$conn=$db->getConnection();$base=new BaseDBOperate();$sql="select A.* from m_menu A,m_roleauth B,m_role C where B.menu=A.id and B.role=C.id and C.id=$id";$arr=$base->query($sql, $conn);$db->close($conn);return $arr;}

这个参数ID就是角色表对应角色的主键id

3.功能授权页面模板代码

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="../../js/jquery.js"></script>
<script type="text/javascript"  src="../../js/SubmitFun.js"></script>
<script type="text/javascript"  src="../../js/jiaoyan.js"></script>
<script type="text/javascript"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>功能授权</title>
<link rel="stylesheet" href="../../css/EditPage.css" type="text/css"></link>
</head>
<body><h1>功能授权</h1><form  action="TopMenuController.php" name="forms"  method="post" ><table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#ebebeb" class="black"><{foreach from=$powerMenu item=message}>  <tr><td align="left"><input type="checkBox" name="selectIDs[]" id="news<{$message.id}>" value="<{$message.id}>" checked/><{$message.name}></td></tr><{/foreach}><{foreach from=$noPowerMenu item=message2}>    <tr><td align="left"><input type="checkBox" name="selectIDs[]" id="news<{$message2.id}>" value="<{$message2.id}>"/><{$message2.name}></td></tr><{/foreach}><tr><td colspan="2" align="center"><input type="hidden" name="roleId" value="<{$roleId}>"/><input type="hidden" name="type" value="addPower"/><input type="button" onClick="javaScript:history.back(-1);" value="返回"/><input type="submit" value="[授权]" οnclick="javascrip:return  assignCheck();"/></td></tr></table></form>
</body>
</html>

页面效果如下

点击“授权”就ok了,授权操作就是向m_roleauth插入数据,我的处理每次授权都要删除前面授权过的记录这样可以防止数据库出现冗余数据

4.授权功能控制器代码

function addPower(){$roleId=$_POST["roleId"];if(!empty($_POST ["selectIDs"])){$ids = $_POST ["selectIDs"];$param = "";for($i = 0; $i < count ( $ids ); $i ++) {$param .= "$ids[$i],";}$menuManager=new TopMenuManagerImpl();//echo substr($param, 0, strrpos ($param, ","));$result=$menuManager->addPower($roleId, substr($param, 0, strrpos ($param, ",")));if("1"==$result){header("Location:RoleController.php?type=roleList");}}
}

最后来看看这个addPower方法

//角色功能授权(先删除对应角色权限表信息,之后添加数据)public function addPower($role,$ids){//删除先前的角色权限信息$allId=explode(",", $ids);$db=new DBUtil();$conn=$db->getConnection();$base=new BaseDBOperate();$sqlDel="delete from m_roleauth where role=$role";$flag=$base->otherOperate($sqlDel, $conn);for($i=0;$i<count($allId);$i++){$sql="insert into m_roleauth(role,menu) values($role,$allId[$i])";$base->otherOperate($sql, $conn);}$db->close($conn);return "1";}

这个模块完了,是不是很简单呢。下次要和大家分享的是smarty缓存和使用smarty自定义函数实现表格隔行变色、抓取网络资源

角色权限管理系统(角色功能授权)相关推荐

  1. 通用基于角色权限管理系统-李杰-专题视频课程

    通用基于角色权限管理系统-532人已学习 课程介绍         使用Django实现基于角色的权限访问控制(Role-Based Access Control)组件,其中涉及Django中间件.S ...

  2. PHP网站后台角色权限管理系统源码

    简介: PHP网站后台角色权限管理系统源码带数据库 网盘下载地址: http://kekewangLuo.net/vnVhjPzNH9R0 图片:

  3. vue后台系统管理项目-角色权限分配管理功能

    vue后台系统管理项目: 技术选型:vue + element-ui 菜单权限管理模块功能 角色列表查询,通过(角色名称:角色编号:状态:启用.禁用)进行角色数据搜索. 查询.重置.新建角色功能 角色 ...

  4. SSM+mysql实现的汽车销售管理系统(角色权限分离,功能:采购申请、仓储入库、车辆出库、车辆入库、登录、客户管理、汽车销售柱状统计、销售统计、组织结构管理)

    博客目录 SSM汽车销售管理系统 实现功能截图 系统功能 使用技术 代码 写在最后 SSM汽车销售管理系统 本系统是解决了汽车销售领域品类针对性管理的问题,通过组织角色权限分离,采购入库出库等业务设计 ...

  5. oracle常用角色权限,Oracle角色、权限的一些常用视图 - 一夜寒江

    Oracle角色.权限的一些常用视图 ORACLE中数据字典视图分为3大类 , 用前缀区别,分别为:USER,ALL 和 DBA,许多数据字典视图包含相似的信息. USER_*: 有关用户所拥有的对象 ...

  6. 用户·角色·权限·表的设计

    设计一个灵活.通用.方便的权限管理系统. 在这个系统中,我们需要对系统的所有资源进行权限控制,那么系统中的资源包括哪些呢?我们可以把这些资源简单概括为静态资源(功能操作.数据列)和动态资源(数据),也 ...

  7. Web开发中的用户角色权限设计总结

    在Web开发中关于权限管理设计大抵涉及到两个方面:一:功能方面权限设计:二:资源方面权限设计.二者比较来看,功能方面权限的可重用性更高. 1.关于权限: 按照角色权限的最简单的设计 名称 描述 用户 ...

  8. Mendix用户角色权限设计思路

    ​在传统的企业应用架构设计中,不可避免需要涉及用户角色权限的设计,其中最为通用的模型是RBAC模型.RBAC(基于角色的访问控制)是指用户通过角色与权限进行关联.即一个用户拥有若干角色,每一个角色拥有 ...

  9. Java论坛系统--3.系统用户角色权限表结构设计

    通常我们的网站都有权限控制,就像一个公司有产品.开发.运维之分,各自负责各自的业务,相互独立,有相互协作,共同完成一个任务.拥有不同权限的用户查看不同的页面,进行不同的操作. Shiro是一种轻量级的 ...

  10. java开发企业级权限管理系统_Java开发企业级权限管理系统 视频教程

    第1章 课程整体概述与权限管理系统介绍 1-1 为什么企业级项目需要权限管理 1-2 权限管理的核心是什么? 1-3 理想中的权限管理应该是什么样的? 1-4 主流开源权限管理框架有哪些? 1-5 1 ...

最新文章

  1. ansible之playbook
  2. html 启动bat脚本,Windows开机自启动bat脚本设置方法
  3. 多系统通讯-DotNetMQ
  4. 【转】FPGA到底是啥?
  5. 单点登录 cas 设置回调地址_单点登录落地实现技术有哪些,有哪些流行的登录方案搭配?...
  6. HDOJ 4734 数位DP
  7. Python3的opencv环境搭建简易教程
  8. 新浪云HTML播放音乐,音乐播放器-html代码
  9. 科学计算机上的R,r科学计算器Calculator
  10. Docker端口映射后外部无法访问现象排查
  11. python 执行linux rm命令_Linux rm命令:删除文件
  12. php win8环境搭建
  13. 中职教计算机专业发展,论职业教育计算机专业教学怎样适应社会的发展需求
  14. Linux常用英文总结
  15. 递归与lamdba与高阶函数
  16. sequoia 的详细安装步骤
  17. unity动画转换插件 AnimationConverter, humanoid generic legacy
  18. chinapay 新版php接口,php最新银联支付chinaPay,最新接口地址
  19. perl里嵌套shell命令转义符_Linux-包教包会系列之-shell
  20. 智能硬件创业调查:去北京 还是去深圳?

热门文章

  1. gmail邮箱注册_Android中的Google帐户集成–使用Gmail登录
  2. 我可以利用计算机查找资料,《信息检索》复习题库 (1)
  3. UVA489 刽子手的游戏 Hangman Judge
  4. spring Aop中切入点和连接点什么关系?
  5. Matlab中图形对象属性gcf使用
  6. Web前端工程师推荐的书籍
  7. 抖音从流量上游杀入本地生活市场,美团如何“以牙还牙”?
  8. python读取grd数据_从等值线图形获取DAT和GRD格式的数据文件_王宜芳
  9. 罗振宇2021跨年演讲3:谁能跳出数字化系统困境?
  10. 从“一时红”到“持久火”,“网红”农产品如何越向“长红”?