访问权限控制的实现

Original 2019-04-19 08:15:42 212
abstract:<?php/** * Created by PhpStorm. * User: 12757 * Date: 2019/4/16 * Time: 18:32 */namespace app\admins\controller;use think\Controller;use Util\SysDb;class Roles extends Base{    public fun

<?php
/**
* Created by PhpStorm.
* User: 12757
* Date: 2019/4/16
* Time: 18:32
*/

namespace app\admins\controller;
use think\Controller;
use Util\SysDb;

class Roles extends Base
{
   public function index()
   {
       $data['lists'] = $this->db->table('admin_groups')->lists();
       return $this->fetch('',$data);
   }

   //添加框
   public function add()
   {
       $gid = (int)input('get.gid');
       $group = $this->db->table('admin_groups')->where(array('gid'=>$gid))->item();
       if($group)
       {
           $group['rights'] = json_decode($group['rights']);
       }

       //找到所有正常的菜单,索引是mid
       $menu_list = $this->db->table('admin_menus')->where(array('status'=>0))->cates('mid');
       $menu = $this->gettreeitems($menu_list);//结果数组,这个方法用于返回需要的菜单的层级结构

       $results = [];
       foreach($menu as $value){
           $value['children'] = isset($value['children'])?$this->formatMenus($value['children']):false;
           $results[] = $value;
       }


//        dump($results);
//        return;

       $data['menus'] = $results;
       $data['group'] = $group;
       return $this->fetch('',$data);
   }

   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;
   }

   private function formatMenus($items,&$res = array()){
       foreach($items as $item){
           if(!isset($item['children'])){
               $res[] = $item;
           }else{//有子菜单
               $tem = $item['children'];
               unset($item['children']);
               $res[] = $item;
               //有子节点的元素处理
               $this->formatMenus($tem,$res);
           }
       }
       return $res;
   }

   //保存权限管理信息
   public function save(){
       $gid = (int)input('post.gid');

       $data['title'] = trim(input('post.title'));
       $menus = input('post.menu/a');
       if(!$data['title']){
           exit(json_encode(array('code'=>1,'msg'=>'角色名称不能为空')));
       }
       //如果有menus,就把data里面的rights赋值
       $menus && $data['rights'] = json_encode(array_keys($menus));//把menus的key,就是菜单的id取出来
       //如果gid存在,则一定是编辑操作,而不是加入操作
       if($gid){
           $this->db->table('admin_groups')->where(array('gid'=>$gid))->update($data);
       }else{
           $this->db->table('admin_groups')->insert($data);
       }


       exit(json_encode(array('code'=>0,'msg'=>'保存成功')));
   }

   //删除角色
   public function delete()
   {
       $gid = (int)input('post.gid');
       $this->db->table('admin_groups')->where(array('gid'=>$gid))->delete();
       exit(json_encode(array('code'=>0,'msg'=>'删除成功')));
   }

}

Correcting teacher:查无此人Correction time:2019-04-19 09:39:48
Teacher's summary:看来你完成了不少的作业呀。权限的控制,之后可以自己添加:按钮没有权限,就看不到按钮。继续加油。

Release Notes

Popular Entries