TP6管理后台實戰第四天-權限管理


第四天:

1、菜單權限管理--ok
2、日志管理-- ok
 

進入開發:

一、日志管理

日志管理比較簡單,先把日志管理搞好
 

1.1 管理員登錄日志

搜索:起止時間,管理員賬號 ,狀態,IP, -- ok
列表項:ID,管理員ID/賬號 狀態 IP 添加時間 操作 (刪除) -- ok
功能:批量刪除, -- ok
分頁功能: --ok
 
 1  /**
 2      * 管理員登錄日志
 3      */
 4     public function adminLoginList()
 5     {
 6         if (!$this->access)  exit('無此訪問權限!');
 7 
 8         $data = request()->param();
 9 
10         $return_data = array(
11             'admin_info' => $this->admin_info,
12             'admin_id'   => $this->admin_id
13         );
14 
15         //搜索條件
16         $whereCond = array();
17         if (!empty($data['admin_name'])) 
18         {
19             $admin_id = Db::name('yphp_admin')->where("admin_name",$data['admin_name'])->value('admin_id');
20             if (!empty($admin_id)) 
21             {
22                $whereCond[] = array('admin_id','=',$admin_id);
23             }
24             
25         } 
26         if (!empty($data['login_status'])) $whereCond[] = array('login_status','=',$data['login_status']);
27         if (!empty($data['login_ip'])) $whereCond[] = array('login_ip','=',$data['login_ip']);
28         if (!empty($data['start'])) $whereCond[] = array('add_datetime','>',$data['start']);
29         if (!empty($data['end'])) $whereCond[] = array('add_datetime','<=',$data['end']." 23:59:59");
30 
31         
32         //搜索默認值
33         $return_data['admin_name']     = empty($data['admin_name'])?'':$data['admin_name'];
34         $return_data['login_status'] = empty($data['login_status'])?'':$data['login_status'];
35         $return_data['login_ip']   = empty($data['login_ip'])?'':$data['login_ip'];
36         $return_data['start']   = empty($data['start'])?'':$data['start'];
37         $return_data['end']   = empty($data['end'])?'':$data['end'];
38 
39 
40         //獲取列表
41         $data_list = Db::name('yphp_admin_login')->where($whereCond)->order('id', 'desc')->paginate(array(
42             'list_rows' => 10,
43             'query'     => $data
44         ))->each(function($item, $key){
45 
46             $item['admin_name'] = Db::name('yphp_admin')->where("admin_id",$item['admin_id'])->value('admin_name');
47             return $item;
48         });
49 
50 
51         $return_data['data_list'] = $data_list;
52         // 獲取分頁顯示
53         $return_data['page'] = $data_list->render();
54 
55        return view("logs/admin_login_list",$return_data);
56     }
57 
58     /**
59      * 刪除日志
60      */
61     public function adminLoginDel()
62     {
63 
64         if (!$this->access)  return json(array('status'=>'FAIL','msg'=>'無此訪問權限!')); 
65 
66        $id  = request()->param('id');
67        $ids  = request()->param('ids');
68 
69        if (!empty($id)) 
70        {
71            if($this->admin_info['admin_role_id'] == 0 || $this->admin_info['admin_role_id'] == 1)
72            {
73                 Db::name('yphp_admin_login')->where("id",$id)->delete();
74                 return json(array('status'=>'SUCCESS','msg'=>'刪除成功'));
75            }
76            else
77            {
78                 return json(array('status'=>'FAIL','msg'=>'刪除失敗,日志記錄僅超級管理員和系統管理員可以刪除!'));
79            }
80        }elseif(!empty($ids)){
81 
82             if($this->admin_info['admin_role_id'] == 0 || $this->admin_info['admin_role_id'] == 1)
83            {
84                 Db::name('yphp_admin_login')->where("id",'in',$ids)->delete();
85                 return json(array('status'=>'SUCCESS','msg'=>'刪除成功'));
86            }
87            else
88            {
89                 return json(array('status'=>'FAIL','msg'=>'刪除失敗,日志記錄僅超級管理員和系統管理員可以刪除!'));
90            }
91        }
92     }
View Code

 

1.2 管理員操作日志

搜索:添加時間 管理員賬號,控制器,操作,IP, -- ok
列表項:ID,管理員ID/賬號 訪問地址 ,控制器 操作 IP 添加時間 操作(查看明細,刪除) -- ok
功能:批量刪除 ,單個刪除-- ok
功能:查看詳情 -- ok
 
 1 /**
 2      * 管理員操作列表
 3      */
 4     public function adminOpList()
 5     {
 6         if (!$this->access)  exit('無此訪問權限!');
 7 
 8         $data = request()->param();
 9 
10         $return_data = array(
11             'admin_info' => $this->admin_info,
12             'admin_id'   => $this->admin_id
13         );
14 
15         //搜索條件
16         $whereCond = array();
17         if (!empty($data['admin_name']))  $whereCond[] = array('admin_name','=',$data['admin_name']);
18         if (!empty($data['op_controller'])) $whereCond[] = array('op_controller','=',$data['op_controller']);
19         if (!empty($data['op_action'])) $whereCond[] = array('op_action','=',$data['op_action']);
20         if (!empty($data['login_ip'])) $whereCond[] = array('login_ip','=',$data['login_ip']);
21         if (!empty($data['start'])) $whereCond[] = array('add_datetime','>',$data['start']);
22         if (!empty($data['end'])) $whereCond[] = array('add_datetime','<=',$data['end']." 23:59:59");
23 
24         //搜索默認值
25         $return_data['admin_name']     = empty($data['admin_name'])?'':$data['admin_name'];
26         $return_data['op_controller'] = empty($data['op_controller'])?'':$data['op_controller'];
27         $return_data['op_action'] = empty($data['op_action'])?'':$data['op_action'];
28         $return_data['ip_address']   = empty($data['ip_address'])?'':$data['ip_address'];
29         $return_data['start']   = empty($data['start'])?'':$data['start'];
30         $return_data['end']   = empty($data['end'])?'':$data['end'];
31 
32 
33         //獲取列表
34         $data_list = Db::name('yphp_admin_op_log')->where($whereCond)->order('id', 'desc')->paginate(array(
35             'list_rows' => 10,
36             'query'     => $data
37         ));
38 
39         $return_data['data_list'] = $data_list;
40         // 獲取分頁顯示
41         $return_data['page'] = $data_list->render();
42 
43        return view("logs/admin_op_list",$return_data);
44     }
45 
46     /**
47      * 刪除日志
48      */
49     public function adminOpDel()
50     {
51         if (!$this->access)  return json(array('status'=>'FAIL','msg'=>'無此訪問權限!')); 
52 
53        $id  = request()->param('id');
54        $ids  = request()->param('ids');
55 
56        if (!empty($id)) 
57        {
58            if($this->admin_info['admin_role_id'] == 0 || $this->admin_info['admin_role_id'] == 1)
59            {
60                 Db::name('yphp_admin_op_log')->where("id",$id)->delete();
61                 return json(array('status'=>'SUCCESS','msg'=>'刪除成功'));
62            }
63            else
64            {
65                 return json(array('status'=>'FAIL','msg'=>'刪除失敗,日志記錄僅超級管理員和系統管理員可以刪除!'));
66            }
67        }elseif(!empty($ids)){
68 
69             if($this->admin_info['admin_role_id'] == 0 || $this->admin_info['admin_role_id'] == 1)
70            {
71                 Db::name('yphp_admin_op_log')->where("id",'in',$ids)->delete();
72                 return json(array('status'=>'SUCCESS','msg'=>'刪除成功'));
73            }
74            else
75            {
76                 return json(array('status'=>'FAIL','msg'=>'刪除失敗,日志記錄僅超級管理員和系統管理員可以刪除!'));
77            }
78        }
79     }
80 
81      /**
82      * 查看日志
83      */
84      public function adminOpShow()
85     {
86         if (!$this->access)  exit('無此訪問權限!');
87         
88        $id  = request()->param('id');
89 
90        $info = Db::name('yphp_admin_op_log')->where("id",$id)->find();
91        
92        return view("logs/admin_op_show",array('info'=>$info));
93     }
View Code

 

二、菜單權限管理

2.1 菜單,權限列表
 
搜索:菜單名稱,規則分類,控制器,操作,權限狀態 -- ok
列表項:ID,菜單名稱,菜單類型,Controller,Action,狀態,添加時間 ,操作(添加子菜單,編輯,修改) -- ok
功能:刪除菜單 --ok
功能:添加菜單 --ok
功能:編輯菜單--ok
 
2.2 角色中加入權限選擇
添加角色,增加權限選項--ok
修改角色,增加角色選項--ok
 
  1 /**
  2      * 菜單權限列表
  3      */
  4     public function powerList()
  5     {
  6         if (!$this->access)  exit('無此訪問權限!');
  7 
  8         $data = request()->param();
  9 
 10         $return_data = array(
 11             'admin_info' => $this->admin_info,
 12             'admin_id'   => $this->admin_id
 13         );
 14 
 15         //搜索條件
 16         $whereCond = array();
 17         if (!empty($data['parent_id']))  $whereCond[] = array('id','=',$data['parent_id']);
 18       
 19         //搜索默認值
 20         $return_data['parent_id'] = empty($data['parent_id'])?'':$data['parent_id'];
 21 
 22         //搜索項
 23         $data_lista = Db::name('yphp_admin_power')->where("ptype",1)->order('porder', 'desc')->select()->toArray();
 24 
 25         //獲取第一級菜單
 26         $data_list = Db::name('yphp_admin_power')->where($whereCond)->where("ptype",1)->order('porder', 'desc')->select()->toArray();
 27         foreach ($data_list as $key => $val) 
 28         {
 29             //獲取二級菜單
 30             $data_list[$key]['child'] = Db::name('yphp_admin_power')->where("parent_id",$val['id'])->where("ptype",2)->order('porder', 'desc')->select()->toArray();
 31             //獲取三級菜單
 32             foreach ($data_list[$key]['child'] as $key2 => $val2) 
 33             {
 34                 $data_list[$key]['child'][$key2]['child'] = Db::name('yphp_admin_power')->where("parent_id",$val2['id'])->where("ptype",3)->order('porder', 'desc')->select()->toArray();
 35             }
 36         }
 37         $return_data['data_list'] = $data_list;
 38         $return_data['data_lista'] = $data_lista;
 39         // 獲取分頁顯示
 40         //$return_data['page'] = $data_list->render();
 41 
 42 
 43        return view("admin/powders_list",$return_data);
 44     }
 45 
 46     /**
 47      * 刪除菜單或權限
 48      */
 49     public function powerDel()
 50     {
 51 
 52        if (!$this->access)  return json(array('status'=>'FAIL','msg'=>'無此訪問權限!')); 
 53 
 54        $id  = request()->param('id');
 55        if (empty($id)) return json(array('status'=>'FAIL','msg'=>'ID不能為空!'));
 56 
 57        //判斷該角色下面沒有管理員,則可進行刪除
 58        $num = Db::name('yphp_admin_power')->where("parent_id",$id)->count();
 59        if ($num > 0) {
 60           return json(array('status'=>'FAIL','msg'=>'刪除失敗,該菜單下面還有子菜單!'));
 61        }
 62 
 63        if($this->admin_info['admin_role_id'] > 1)
 64        {
 65             return json(array('status'=>'FAIL','msg'=>'刪除失敗,僅超級管理員或系統管理員可刪除菜單'));
 66        }
 67 
 68        Db::name('yphp_admin_power')->where("id",$id)->delete();
 69 
 70        return json(array('status'=>'SUCCESS','msg'=>'刪除成功'));
 71     }
 72 
 73     /**
 74      * 添加菜單
 75      */
 76     public function powerAdd()
 77     {
 78         if (!$this->access)  exit('無此訪問權限!');
 79 
 80        $parent_id = request()->param('parent_id');
 81 
 82         //獲取第一級菜單
 83         $data_list = Db::name('yphp_admin_power')->where("ptype",1)->order('porder', 'desc')->select()->toArray();
 84         foreach ($data_list as $key => $val) 
 85         {
 86             //獲取二級菜單
 87             $data_list[$key]['child'] = Db::name('yphp_admin_power')->where("parent_id",$val['id'])->where("ptype",2)->order('porder', 'desc')->select()->toArray();
 88            
 89         }
 90         $return_data['parent_id'] = $parent_id;
 91         $return_data['data_list'] = $data_list;
 92 
 93 
 94        return view("admin/power_add",$return_data);
 95     }
 96 
 97     /**
 98      * 查看圖標
 99      */
100     public function showIcon()
101     {
102        return view("index/unicode");
103     }
104     /**
105      * 編輯菜單
106      */
107     public function powerEdit()
108     {
109 
110         if (!$this->access)  exit('無此訪問權限!');
111 
112        $id = request()->param('id');
113 
114         //獲取第一級菜單
115         $data_list = Db::name('yphp_admin_power')->where("ptype",1)->order('porder', 'desc')->select()->toArray();
116         foreach ($data_list as $key => $val) 
117         {
118             //獲取二級菜單
119             $data_list[$key]['child'] = Db::name('yphp_admin_power')->where("parent_id",$val['id'])->where("ptype",2)->order('porder', 'desc')->select()->toArray();
120         }
121         $info = Db::name('yphp_admin_power')->where("id",$id)->find();
122 
123         $return_data['data_list'] = $data_list;
124         $return_data['info'] = $info;
125 
126 
127        return view("admin/power_edit",$return_data);
128     }
129     /**
130      * 添加菜單操作
131      */
132     public function powerAddAct()
133     {
134         $data = request()->param();
135 
136         //確定菜單類別
137          if ($data['parent_id'] == 0) {
138              $data['ptype'] = 1;
139              if (empty($data['picon'])) {
140                  $data['picon'] = "&#xe723;";
141              }
142 
143              $data['picon'] = base64_encode($data['picon']);
144 
145          }else{
146             $info = Db::name('yphp_admin_power')->where("id",$data['parent_id'])->find();
147             $data['ptype'] = $info['ptype']+1;
148          }
149 
150 
151        if(empty($data['id']))
152        {
153          $info = Db::name('yphp_admin_power')->where("pname",$data['pname'])->find();
154          if(!empty($info))
155          {
156             return json(array('status'=>'FAIL','msg'=>'該菜單已存在,請更換菜單名'));
157          }
158 
159          $id = Db::name('yphp_admin_power')->strict(false)->insertGetId($data);
160          if(empty($id)){
161             return json(array('status'=>'FAIL','msg'=>'添加菜單失敗!'));
162          }else{
163             return json(array('status'=>'SUCCESS','msg'=>'添加菜單成功!'));
164          }
165        }
166        else
167        {
168          //修改管理員
169          Db::name('yphp_admin_power')->strict(false)->update($data);
170          return json(array('status'=>'SUCCESS','msg'=>'修改菜單成功!'));
171        }
172     }
View Code

 

 

嘮嘮嗑:

第四天開發結束:針對TP中有些比較別扭的寫法,直接按照官方的寫就行了,沒必要一直感覺別扭去抵觸,這樣只能大大縮減你的開發速度。既然選擇了用TP,就得接受它。
 

頁面效果展示一部分:

管理員登錄日志
 

 

管理員操作日志
 

 

管理員查看日志詳情
 

 

菜單權限管理:
 

 

添加菜單權限:
 
修改菜單權限:
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM