abstrakt:總結(jié):在Base.php控制器里實(shí)現(xiàn)管理員權(quán)限控制,判斷用戶是否有權(quán)限,還有課訪問的菜單,如果沒有權(quán)限,會(huì)提示無法訪問,如果有權(quán)限可以進(jìn)行操作,通過查詢這個(gè)賬號(hào)的gid對(duì)應(yīng)的權(quán)限表的gid進(jìn)行查詢。/************************ Base.php *******************************/<?phpnamespace app\
總結(jié):在Base.php控制器里實(shí)現(xiàn)管理員權(quán)限控制,判斷用戶是否有權(quán)限,還有課訪問的菜單,如果沒有權(quán)限,會(huì)提示無法訪問,如果有權(quán)限可以進(jìn)行操作,通過查詢這個(gè)賬號(hào)的gid對(duì)應(yīng)的權(quán)限表的gid進(jìn)行查詢。
/************************ Base.php *******************************/
<?php
namespace app\admins\controller;
use think\Controller;
use Util\SysDb;
class Base extends Controller{
public function __construct(){
parent::__construct();
$this->_admin = session('admin');
if(!$this->_admin){
header('Location:/index.php/admins/account/login');
exit;
}
$this->assign('admin',$this->_admin);
$this->db = new SysDb;
// 判斷用戶是否有權(quán)限
$group = $this->db->table('admin_groups')->where(array('gid'=>$this->_admin['gid']))->item();
if(!$group){
$this->request_error('對(duì)不起,您沒有權(quán)限');
}
$rights = json_decode($group['rights']);
// 當(dāng)前訪問的菜單
$controller = request()->controller();
$method = request()->action();
$res = $this->db->table('admin_menus')->where(array('controller'=>$controller,'method'=>$method))->item();
if(!$res){
$this->request_error('對(duì)不起,您訪問的功能不存在');
}
if($res['status'] == 1){
$this->request_error('對(duì)不起,該功能已禁止使用');
}
if(!in_array($res['mid'],$rights)){
$this->request_error('對(duì)不起,您沒有權(quán)限');
}
}
private function request_error($msg){
if(request()->isAjax()){
exit(json_encode(array('code'=>1,'msg'=>$msg)));
}
exit($msg);
}
}
/**************************** Home.php ***************************/
<?php
namespace app\admins\controller;
use think\Controller;
use Util\SysDb;
class Home extends Base{
public function index(){
$role = $this->db->table('admin_groups')->where(array('gid'=>$this->_admin['gid']))->item();
if($role){
$role['rights'] = $role['rights']?json_decode($role['rights'],true):[];
}
if($role['rights']){
$where = 'mid in('.implode(',', $role['rights']).') and ishidden=0 and status=0';
$menus = $this->db->table('admin_menus')->where($where)->cates('mid');
$menus && $menus = $this->gettreeitems($menus);
}
$data['menus'] = $menus;
$data['role'] = $role;
return $this->fetch('',$data);
}
public function welcome(){
return $this->fetch();
}
private function gettreeitems($items){
$tree = [];
foreach ($items as $item) {
if(isset($items[$item['pid']])){
$items[$item['pid']]['children'][] = &$items[$item['mid']];
}else{
$tree[] = &$items[$item['mid']];
}
}
return $tree;
}
}
Korrigierender Lehrer:查無此人Korrekturzeit:2019-01-04 15:23:00
Zusammenfassung des Lehrers:做的不錯(cuò),思考的方向是對(duì)的。按照你的方向,可以把每個(gè)列表的按鈕,也做個(gè)權(quán)限。這個(gè)有點(diǎn)難度。 繼續(xù)加油。