tp中的权限(RBAC)

目录文件(仅仅写的权限的代码)

                   

Role/showlist.html 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html>
     <head>
         <meta http-equiv= "content-type" content= "text/html; charset=UTF-8" />
 
         <title>角色列表</title>
 
         <link href= "__CSS__/mine.css" type= "text/css" rel= "stylesheet" />
     </head>
     <body>
         <style>
             .tr_color{background-color: #9F88FF}
         </style>
         <div class = "div_head" >
             <span>
                 <span style= "float: left;" >当前位置是:权限管理-》角色列表</span>
                 <span style= "float: right; margin-right: 8px; font-weight: bold;" >
                     <a style= "text-decoration: none;" href= "__URL__/add" >【添加角色】</a>
                 </span>
             </span>
         </div>
         <div style= "font-size: 13px; margin: 10px 5px;" >
             <table class = "table_a" border= "1" width= "100%" >
                 <tbody><tr style= "font-weight: bold;" >
                         <td >角色id</td>
                         <td >角色名称</td>
                         <td >权限ids</td>
                         <td >role_auth_ac</td>
                         <td  align= "center" >操作</td>
                     </tr>
              <volist name= "list" id= "vo" >
                     
                     <tr id= "product{$i}" >
                         <td>{ $vo .role_id}</td>
                         <td><a href= "#" >{ $vo .role_name}</a></td>
                         <td>{ $vo .role_auth_ids}</td>
                         <td>{ $vo .role_auth_ac}</td>
                         <td>
                         <a href= "__URL__/showauth/rid/{$vo.role_id}" >分配权限</a>
                         <a href= "#" >修改</a>
                         <a href= "#" >删除</a>
                         </td>
                     </tr>
              </volist>
                     <tr>
                         <td colspan= "20" style= "text-align: center;" >
                             { $page }
                         </td>
                     </tr>
                 </tbody>
             </table>
         </div>
     </body>
</html>

  

Role/showautht.html 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html>
     <head>
         <title>给角色分配权限</title>
         <meta http-equiv= "content-type" content= "text/html;charset=utf-8" />
         <link href= "__CSS__/mine.css" type= "text/css" rel= "stylesheet" />
     </head>
 
     <body>
         <div class = "div_head" >
             <span>
                 <span style= "float:left" >当前位置是:角色管理-》分配权限信息【{ $role_info [ 'role_name' ]}】</span>
                 <span style= "float:right;margin-right: 8px;font-weight: bold" >
                     <a style= "text-decoration: none" href= "__CONTROLLER__/showlist" >【返回】</a>
                 </span>
             </span>
         </div>
         <div></div>
 
         <div style= "font-size: 13px;margin: 10px 5px" >
             <form action= '__SELF__' method= 'post' >
                 <table cellspacing= '1' id= "list-table" >
                     <volist name= 'auth_infoA' id= 'v' >
                     <tr>
                         <td width= "25%" valign= "top" class = "first-cell" style= 'border-bottom:2px solid gray; font-weight:bold;' >
                             <input type= "checkbox" name= "auth_id[]" value= "{$v['auth_id']}" class = "checkbox"
                                    < if condition= "in_array($v['auth_id'],$authidsarr)" >checked= 'checked' </ if >
                                    />{ $v [ 'auth_name' ]}
                                    </td>
                         <td width= '75%' style= 'border-bottom:2px solid gray;' >
                             <volist name= 'auth_infoB' id= "vv" >
                             < if condition= "$vv['auth_pid']  eq $v['auth_id']" >
                             <div style= "width:200px;float:left;" >
                                 <input type= "checkbox" name= "auth_id[]" value= "{$vv['auth_id']}"
                                      < if condition= "in_array($vv['auth_id'],$authidsarr)" >checked= 'checked' </ if >
                                        />{ $vv [ 'auth_name' ]}
                             </div>
                             </ if >
                             </volist>
                         </td>
                     </tr>
                     </volist>
                 </table>
                 <input type= 'submit' value= '分配权限' />
             </form>
         </div>
     </body>
</html>

  

Auth/showlist.html  代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html>
     <head>
         <meta http-equiv= "content-type" content= "text/html; charset=UTF-8" />
 
         <title>权限列表</title>
 
         <link href= "__CSS__/mine.css" type= "text/css" rel= "stylesheet" />
     </head>
     <body>
         <style>
             .tr_color{background-color: #9F88FF}
         </style>
         <div class = "div_head" >
             <span>
                 <span style= "float: left;" >当前位置是:权限管理-》权限列表</span>
                 <span style= "float: right; margin-right: 8px; font-weight: bold;" >
                     <a style= "text-decoration: none;" href= "__URL__/addauth" >【添加权限】</a>
                 </span>
             </span>
         </div>
         <div style= "font-size: 13px; margin: 10px 5px;" >
             <table class = "table_a" border= "1" width= "100%" >
                 <tbody><tr style= "font-weight: bold;" >
                         <td >序号</td>
                         <td >权限名称</td>
                         <td >父权限id</td>
                         <td >控制器</td>
                         <td >方法</td>
                         <td >全路径</td>
                         <td >级别</td>
                         <td  align= "center" >操作</td>
                     </tr>
              <volist name= "list" id= "vo" >
                     
                     <tr id= "product{$i}" >
                         <td>{ $vo .auth_id}</td>
                         <td>{ $ge | str_repeat = $vo [ 'auth_level' ]}{ $vo .auth_name}</td>
                         <td>{ $vo .auth_pid}</td>
                         <td>{ $vo .auth_c}</td>
                         <td>{ $vo .auth_a}</td>
                         <td>{ $vo .auth_path}</td>
                         <td>{ $vo .auth_level}</td>
                         <td>
                         <a href= "#" >修改</a>
                         <a href= "__URL__/del/id/{$vo.auth_id}" >删除</a>
                         </td>
                     </tr>
              </volist>
                     <tr>
                         <td colspan= "20" style= "text-align: center;" >
                             { $page }
                         </td>
                     </tr>
                 </tbody>
             </table>
         </div>
     </body>
</html>

  

Auth/addauth.html  代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
<html>
     <head>
         <title>添加权限</title>
         <meta http-equiv= "content-type" content= "text/html;charset=utf-8" >
         <link href= "./css/mine.css" type= "text/css" rel= "stylesheet" >
     </head>
 
     <body>
 
         <div class = "div_head" >
             <span>
                 <span style= "float:left" >当前位置是:权限管理-》添加权限信息</span>
                 <span style= "float:right;margin-right: 8px;font-weight: bold" >
                     <a style= "text-decoration: none" href= "__URL__/showlist" >【返回】</a>
                 </span>
             </span>
         </div>
         <div></div>
 
         <div style= "font-size: 13px;margin: 10px 5px" >
             <form action= "__SELF__" method= "post" enctype= "multipart/form-data" >
             <table border= "1" width= "100%" class = "table_a" >
                 <tr>
                     <td>权限名称</td>
                     <td><input type= "text" name= "auth_name" /></td>
                 </tr>
                 <tr>
                     <td>权限父id</td>
                     <td>
                         <select name= "auth_pid" >
                             <option value= "0" >请选择</option>
                              < foreach name= "list" item= "vo" >
                             <option value= "{$vo.auth_id}" >{ $vo .auth_name}</option>
                            </ foreach >
                         </select>
                     </td>
                 </tr>
                   <tr>
                     <td>控制器</td>
                     <td><input type= "text" name= "auth_c" /></td>
                 </tr>
                   <tr>
                     <td>方法</td>
                     <td><input type= "text" name= "auth_a" /></td>
                 </tr>
                 <tr>
                     <td colspan= "2" align= "center" >
                         <input type= "submit" value= "添加" >
                     </td>
                 </tr> 
             </table>
             </form>
         </div>
     </body>
</html>

  

Model/AuthModel.class.php  代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
namespace Admin\Model;
use Think\Model;
//Admin模块的manager控制器
class  AuthModel  extends  Model{
     function  saveDate( $info ){
         //根据已有的四个字段生成一条记录
         $newid = $this ->add( $info );
         //根据新增主键进一步制作auth_path和auth——level
         if ( $info [ "auth_pid" ]==0){
             //dingji
             $path = $newid ;
         } else {
             //非顶级
             $pinfo = $this ->find( $info [ "auth_pid" ]);
             $p_path = $pinfo [ "auth_path" ];
             $path = $p_path . "-" . $newid ;
         }
         //全路径数组之后的个数减一的结果
         $level = count ( explode ( "-" , $path ))-1;
         $sql = "update tp_auth  set auth_path='$path',auth_level='$level'where auth_id='$newid'" ;
         return $this ->execute( $sql );
         
     }
}
    

  

Controller/RoleController.class.PHP   代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
namespace Admin\Controller; //声明
use Think\Controller; //用Controller在什么位置
//Admin模块的login控制器
class  RoleController  extends  Controller{
     function showlist(){
         $list =M( "role" )->select();
         $this ->assign( "list" , $list );
         
         $this ->display();
     }
     function showauth( $rid ){
         if (IS_POST){
            $auth_ids = $_POST [ "auth_id" ]; //接收表单
             $role_auth_ids =implode( "," , $auth_ids ); //数组转字符串
             $authnames =M( "auth" )->field( "auth_c,auth_a" )->where( "auth_id in($role_auth_ids)" )->select(); //根据权限id查控制器方法
             
             
             //组织成字符串313883132
             
             $str = "" ;
             foreach ( $authnames as $v ){
                 if (! empty ( $v [ "auth_c" ]))
                 $str .= $v [ "auth_c" ]. "-" . $v [ "auth_a" ]. "," ;
             }
             $str =rtrim( $str , "," ); //去除逗号
             
             //执行SQL语句
           $aql = "update tp_role set role_auth_ids='$role_auth_ids',role_auth_ac='$str' where role_id=$rid" ;
             M( "role" )->execute( $aql );
             $this ->redirect( "showlist" , array ( "rid" => $rid ),1, "分配完成" ); 
                 
         
         }
         //增加权限
         $auth_infoA =M( "auth" )->where( "auth_level=0 " )->select();
         $auth_infoB =M( "auth" )->where( "auth_level=1 " )->select();
             
         $role =M( "role" )->find( $rid );
         $authidsarr = explode ( "," , $role [ "role_auth_ids" ]);
          //注册到模板
         $this ->assign( "auth_infoA" , $auth_infoA );
         $this ->assign( "auth_infoB" , $auth_infoB );
         $this ->assign( "authidsarr" , $authidsarr );
             
         $this ->display();
     
   }
}

  

Controller/AuthController.class.PHP   代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
namespace Admin\Controller; //声明
use Think\Controller; //用Controller在什么位置
//Admin模块的login控制器
class  AuthController  extends  Controller{
     function showlist(){
         $data =M( "auth" )->order( 'auth_path' )->select();
         $this ->assign( "list" , $data );
         $this ->assign( 'ge' , "--/" );
         $this ->display();
     }
     function addauth(){
         $auth = new \Admin\Model\AuthModel();
         if (! empty ( $_POST )){
             $info = $auth ->create();
             if ( $auth ->saveDate( $info )){
                 
                 
                  $this ->redirect( "showlist" , array (),1, "添加成功" );
             } else {
                 echo  "老哥,干啥呢!" ;
             }
           }
           
         
         $pid =M( "auth" )->field( "auth_id,auth_name" )->where( "auth_level=0" )->select();
         $this ->assign( "list" , $pid );
         
         $this ->display();
     }
     //删除的方法
     function del( $id ){ //参数的键名叫id
         $goods =M( 'auth' );
         if ( $goods -> delete ( $id )){
             $this ->success( "删除成功" ,U( "showlist" ),1);
         } else {
             $this ->error( "删除失败" ,U( "showlist" ),1);
         }
     }
     
     
     
     
     
     
     
}

转载于:https://www.cnblogs.com/Prinlily/p/10007448.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值