thinkphp的RBAC

sql

[sql]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. --用户表  
  2. CREATE TABLE IF NOT EXISTS `sw_manager` (  
  3.   `mg_id` int NOT NULL AUTO_INCREMENT,  
  4.   `mg_name` varchar(20) NOT NULL comment '名称',  
  5.   `mg_pwd` varchar(32) NOT NULL comment '密码',  
  6.   `mg_time` int unsigned NOT NULL comment '时间',  
  7.   `mg_role_id` tinyint(1) unsigned not null default 0 comment '角色id',  
  8.   PRIMARY KEY (`mg_id`)  
  9. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;  
  10.   
  11. --权限表  
  12. CREATE TABLE IF NOT EXISTS `sw_auth` (  
  13.   `auth_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,  
  14.   `auth_name` varchar(20) NOT NULL comment '名称',  
  15.   `auth_pid` smallint(6) unsigned NOT NULL comment '父id',  
  16.   `auth_c` varchar(32) not null default '' comment '模块',  
  17.   `auth_a` varchar(32) not null default '' comment '操作方法',  
  18.   `auth_path` varchar(32) NOT NULL comment '全路径',  
  19.   `auth_level` tinyint not null default 0 comment '权限级别012',  
  20.   PRIMARY KEY (`auth_id`)  
  21. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;  
  22.   
  23. --角色表  
  24. CREATE TABLE IF NOT EXISTS `sw_role` (  
  25.   `role_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,  
  26.   `role_name` varchar(20) NOT NULL comment '角色名称',  
  27.   `role_auth_ids` varchar(128) not null default '' comment '权限ids,1,2,5',  
  28.   `role_auth_ac` text comment '模块-操作',  
  29.   PRIMARY KEY (`role_id`)  
  30. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;  
  31.   
  32. `role_auth_ac`=”Company-show,Cat-mag,Product-list”  
  33.   
  34. 角色:  
  35.     董事长  
  36.     总监  
  37.     高级经理  
  38.     经理  
  39.     项目经理  
  40.     业务主管  
  41.     客服  
  42.     技术支持  
  43.     美工  
  44.     员工  
  45.       
  46.   
  47. CREATE TABLE IF NOT EXISTS `sw_auth` (  
  48.   `auth_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,  
  49.   `auth_name` varchar(20) NOT NULL comment '名称',  
  50.   `auth_pid` smallint(6) unsigned NOT NULL comment '父id',  
  51.   `auth_c` varchar(32) not null default '' comment '模块',  
  52.   `auth_a` varchar(32) not null default '' comment '操作方法',  
  53.   `auth_path` varchar(32) NOT NULL comment '全路径父级全路径与本身id做连接,如果没有父级,全路径就是本身id值,用于排序',  
  54.   PRIMARY KEY (`auth_id`)  
  55. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;  
  56.   
  57. insert into sw_auth values (null,'商品管理',0,'','','1');  
  58. insert into sw_auth values (null,'商品列表',1,'Goods','showlist','1-2');  
  59. insert into sw_auth values (null,'添加商品',1,'Goods','add','1-3');  
  60. insert into sw_auth values (null,'用户评论',1,'User','pinglun','1-4');  
  61.   
  62. insert into sw_auth values (null,'订单管理',0,'','','5');  
  63. insert into sw_auth values (null,'订单列表',5,'Order','showlist','5-6');  
  64. insert into sw_auth values (null,'订单查询',5,'Order','view','5-7');  
  65.   
  66. insert into sw_auth values (null,'文章管理',0,'','','8');  
  67. insert into sw_auth values (null,'文章列表',8,'Article','showlist','8-9');  
  68.   
  69. insert into sw_auth values (null,'权限管理',0,'','','10');  
  70. insert into sw_auth values (null,'管理员列表',10,'Manager','showlist','10-11');  
  71. insert into sw_auth values (null,'角色管理',10,'Role','showlist','10-12');  
  72. insert into sw_auth values (null,'权限管理',10,'Auth','showlist','10-13');  
  73.   
  74. CREATE TABLE IF NOT EXISTS `sw_role` (  
  75.   `role_id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,  
  76.   `role_name` varchar(20) NOT NULL comment '角色名称',  
  77.   `role_auth_ids` varchar(128) not null default '' comment '权限ids,1,2,5',  
  78.   `role_auth_ac` text comment '模块-操作',  
  79.   PRIMARY KEY (`role_id`)  
  80. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;  
  81.   
  82. insert into sw_role values (null,'经理','5,6,7','Order-showlist,Order-view');  
  83. insert into sw_role values (null,'员工','1,2,3,4','Goods-showlist,Goods-add,User-pinglun');  
  84.   
  85. alter table sw_manager add mg_time int UNSIGNED not null comment '时间';  
  86. alter table sw_manager add mg_role_id tinyint UNSIGNED not null default 0 comment '角色id';  
  87.       

RoleAction

[php]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?php  
  2.   
  3. import("@.components.AdminAction");  
  4. class RoleAction extends AdminAction{  
  5.     function showlist(){  
  6.         $info = D("Role")->select();  
  7.           
  8.         $this -> assign('info',$info);  
  9.         $this -> display();  
  10.     }  
  11.       
  12.     //分配权限方法  
  13.     function distribute($role_id){  
  14.           
  15.         //表单数据收集  
  16.         if(!empty($_POST)){  
  17.             //给角色分配具体权限  
  18.             $rst = D("Role")->distributeAuth($_POST['auth_name'],$role_id);  //普通模型方法  
  19.             if($rst){  
  20.                 $this -> success("分配权限成功",U("Role/showlist"));  
  21.             }  
  22.         }else {  
  23.             //获得全部权限信息  
  24.             $p_auth = D("Auth")->where("auth_level=0")->select();  
  25.             $s_auth = D("Auth")->where("auth_level=1")->select();  
  26.             $t_auth = D("Auth")->where("auth_level=2")->select();  
  27.   
  28.             //根据$role_id查询对应角色名称  
  29.             $role_info = D("Role")->getByRole_id($role_id);  
  30.             $role_name = $role_info['role_name'];  //角色名称  
  31.             $role_auth_ids = $role_info['role_auth_ids'];  //权限id值  
  32.             $this -> assign('role_name'$role_name);  
  33.             $this -> assign('role_auth_ids'explode(',',$role_auth_ids));  
  34.   
  35.             $this -> assign('p_auth',$p_auth);  
  36.             $this -> assign('s_auth',$s_auth);  
  37.             $this -> assign('t_auth',$t_auth);  
  38.   
  39.             $this -> display();  
  40.         }  
  41.     }  
  42. }  

IndexAction

[php]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?php  
  2.   
  3. //后台主架构控制器  
  4.   
  5. class IndexAction extends Action{  
  6.     //默认调用index方法  
  7.     function index(){  
  8.         $this -> display();  
  9.     }  
  10.       
  11.     //"品"字头部  
  12.     function head(){  
  13.         //查看系统有哪些常量可以使用  
  14.           
  15.         //获得全部常量信息,true,常量根据类型进行分类显示  
  16.         //var_dump(get_defined_constants(true));  
  17.         $this -> display();  
  18.     }  
  19.       
  20.     //"品"字左边  
  21.     function left(){  
  22.         //用户--角色--权限  
  23.         //给左边传递数据,可以直接使用  
  24.         //$_SESSION['mg_id']  
  25.         //manager    role    auth  
  26.         $model = M();  
  27.           
  28.         $sql = "select b.role_auth_ids from sw_manager a join sw_role b on a.mg_role_id=b.role_id where a.mg_id=".$_SESSION['mg_id'];  
  29.           
  30.         $info = $model -> query($sql);  
  31.         $auth_ids = $info[0]['role_auth_ids'];  
  32.           
  33.         //查询具体权限  
  34.         //查询父权限  
  35.         $sql = "select * from sw_auth where auth_level=0";  
  36.         if($_SESSION['mg_id'] != 1){  
  37.             $sql .=" and auth_id in ($auth_ids)";  
  38.         }  
  39.         $p_auth_info = $model -> query($sql);  
  40.         //查询子权限  
  41.         $sql = "select * from sw_auth where auth_level=1";  
  42.         if($_SESSION['mg_id'] != 1){  
  43.             $sql .=" and auth_id in ($auth_ids)";  
  44.         }  
  45.         $s_auth_info = $model -> query($sql);  
  46.   
  47.         $this -> assign('p_auth'$p_auth_info);  
  48.         $this -> assign('s_auth'$s_auth_info);  
  49.           
  50.         $this -> display();  
  51.     }  
  52.       
  53.     function right(){  
  54.         $this -> display();  
  55.     }  
  56. }  

ManagerAction

[php]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?php  
  2.   
  3. //后台管理员控制器  
  4.   
  5. class ManagerAction extends Action{  
  6.     //登录系统  
  7.     function login(){  
  8.         //读取语言变量信息  
  9.         //L(名称)  读取指定语言信息  
  10.         //L()     把全部语言以数组形式给我们返回  
  11.         //show_bug(L());  
  12.           
  13.           
  14.           
  15.         if(!empty($_POST)){  
  16.             //判断验证码是否正确  
  17.             //$_SESSION['verify']  
  18.             //让用户提交过来的验证码与session的做比较  
  19.             if(md5($_POST['captcha']) == $_SESSION['verify']){  
  20.                 //用户名和密码校验  
  21.                 //在数据model模型里边,自定义一个方法校验用户名和密码  
  22.                 $manager_model = D("Manager");  
  23.                 $user_info = $manager_model -> checkNamePwd($_POST['mg_name'],$_POST['mg_pwd']);  
  24.                 //如果$user_info不等于false,就说明用户名和密码是正确的  
  25.                 if($user_info !== false){  
  26.                     //持久化用户信息(id和名字)  
  27.                     session("mg_name",$user_info['mg_name']);  
  28.                     session("mg_id",$user_info['mg_id']);  
  29.                     $this -> redirect("Index/index");  
  30.                 } else {  
  31.                     echo "用户名或密码错误!";  
  32.                 }  
  33.             } else {  
  34.                 echo "验证码不正确";  
  35.             }  
  36.         }  
  37.           
  38.         $this -> assign('language',L());  
  39.         $this -> display();  
  40.     }  
  41.       
  42.     //退出系统  
  43.     function logout(){  
  44.         //删除session信息  
  45.         session(null);  
  46.         $this -> redirect("Manager/login");  
  47.     }  
  48.       
  49.     //生成验证码  
  50.     function verifyImg1(){  
  51.         //手动加载对应的类文件  include()引入  
  52.         //echo Image::buildImageVerify();  
  53.           
  54.         //ThinkPHP/Common/common.php  
  55. //        show_bug(class_exists('World'));  
  56. //        //shop/Lib/hello/world.class.php  
  57. //        import("@.hello.world");    
  58. //        show_bug(class_exists("World"));  
  59. //          
  60. //        show_bug(class_exists('Orange'));  
  61. //        import("@.apple.orange");  
  62. //        show_bug(class_exists('Orange'));  
  63.           
  64.         //引入框架核心类文件  
  65. //        show_bug(class_exists('Driver'));  
  66. //        import("think.car.driver");  
  67. //        show_bug(class_exists('Driver'));  
  68.           
  69.         //第三方类库文件引入  
  70. //        show_bug(class_exists('Pink'));  
  71. //        import("ORG.red.pink");  
  72. //        show_bug(class_exists('Pink'));  
  73.           
  74. //        import("ORG.Util.Image");  
  75. //        echo Image::buildImageVerify();  
  76.           
  77.         //引入特殊类文件  
  78. //        show_bug(class_exists('Banana'));  
  79. //        //shop/Lib/apple/banana/good/fresh.class.php  
  80. //        import("@.apple.banana#good#fresh");  
  81. //        show_bug(class_exists('Banana'));  
  82.           
  83.     }  
  84.       
  85.     //生成验证码  
  86.     function verifyImg(){  
  87.         import("ORG.Util.Image");  
  88.         echo Image::buildImageVerify();  
  89.     }  
  90.       
  91.     function showlist(){  
  92.         //获得全部管理员信息  
  93.         $info = D("Manager")->select();  
  94.           
  95.         //获得角色信息  
  96.         $role = D("Role")->select();  
  97.         //把角色变为一维数组信息 array(id值->名称,id值->名称...)  
  98.         $role_info = array();  
  99.         foreach($role as $k => $v){  
  100.             $role_info[$v['role_id']] = $v['role_name'];  
  101.         }  
  102.         $this -> assign('role_info'$role_info);  
  103.           
  104.           
  105.         $this -> assign("info"$info);  
  106.         $this -> display();  
  107.     }  
  108.     //添加管理员  
  109.     function add(){  
  110.         //判断form提交  
  111.         if(!empty($_POST)){  
  112.             $manager_model = D("Manager");  
  113.             //给manager存入数据  
  114.             $_POST['mg_pwd'] = "123456";  
  115.             $_POST['mg_time'] = time();  
  116.             $manager_model -> create();  
  117.             $rst = $manager_model -> add();  
  118.             if($rst){  
  119.                 $this -> success("添加管理员成功",U("Manager/showlist"));  
  120.             }  
  121.         }else {  
  122.             //获得角色信息  
  123.             $role = D("Role")->select();  
  124.             //把角色变为一维数组信息 array(id值->名称,id值->名称...)  
  125.             $role_info = array();  
  126.             foreach($role as $k => $v){  
  127.                 $role_info[$v['role_id']] = $v['role_name'];  
  128.             }  
  129.             $this -> assign('role_info'$role_info);  
  130.   
  131.             $this -> display();  
  132.         }  
  133.     }  
  134. }  

AuthAction

[php]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?php  
  2.   
  3. //权限控制器  
  4.   
  5. class AuthAction extends Action{  
  6.     function showlist(){  
  7.           
  8.         //获得全部权限  
  9.         $info = D("Auth")->order("auth_path")->select();  
  10.         //权限父子级有缩进关系  
  11.         foreach($info as $k => $v){  
  12.             $info[$k]['auth_name'] = str_repeat("-/",$v['auth_level']).$info[$k]['auth_name'];  
  13.         }  
  14.         $this -> assign("info",$info);  
  15.           
  16.         $this -> display();  
  17.     }  
  18.       
  19.     function add(){  
  20.         //判断表单是否提交数据  
  21.         if(!empty($_POST)){  
  22. //            /show_bug($_POST);  
  23.             //在model模型里边制作一个方法处理权限添加  
  24.             $rst = D("Auth")->saveAuth($_POST);  
  25.             if($rst){  
  26.                 $this -> success("添加权限成功",U("Auth/showlist"));  
  27.             }  
  28.         } else {  
  29.             $info = D("Auth")->where('auth_level<2')->order("auth_path")->select();  
  30.             //权限父子级有缩进关系  
  31.             foreach($info as $k => $v){  
  32.                 $info[$k]['auth_name'] = str_repeat("-/",$v['auth_level']).$info[$k]['auth_name'];  
  33.             }  
  34.             //show_bug($info);  
  35.             $authinfo = array(); //array(1=>商品管理,2=>商品列表...)  
  36.             foreach($info as $kk => $vv){  
  37.                 $authinfo[$vv['auth_id']] = $vv['auth_name'];  
  38.             }  
  39.             $this -> assign("authinfo",$authinfo);  
  40.             $this -> display();  
  41.         }  
  42.     }  
  43. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值