| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 | <?php/** *   *  @author  Mike <m@9026.com> *  @version    1.0 *  @date 2015年11月13日 * */namespace App\Services\Admin;use App\Services\Base\BaseProcess;use App\Models\AdminAccessModel;use App\Models\AdminMenusModel;class Acl extends BaseProcess {        private $objModel;    private $menusModel;    /**     * 初始化     *     * @access public     *     */    public function __construct()    {        if( ! $this->objModel) $this->objModel = new AdminAccessModel();        if( ! $this->menusModel) $this->menusModel = new AdminMenusModel();    }        public function checkFunc($module,$contrl,$action) {            }            public function getRoleFunc($roleIds) {        $data =$this->objModel->getRoleAccessMenu($roleIds);        if(!$data) {              return array('menus'=>array(),'func'=>array());        }        $arr = array('/'=>'0','Foundation/Index/index'=>501,'Foundation/Index/welcome'=>502,'Foundation/Login/logout'=>503);        foreach ($data as $val) {            $arr[$val['path']] = $val['id'];        }        return array('menus'=>$data,'func'=>$arr);            ;    }        public function getRoleMenu($roleIds) {        $data =$this->objModel->getRoleAccessMenu($roleIds,true);        if(!$data) {            return array();        }        return $data;    }            public function getRootFunc() {        $data =$this->menusModel->select('id','pid','path','name','display','level','ico')->orderBy('sort','desc')->get()->toArray();        if(!$data) {            return array('menus'=>array(),'func'=>array());        }        $arr = array('/'=>'0','Foundation/Index/index'=>501,'Foundation/Index/welcome'=>502,'Foundation/Login/logout'=>503);        foreach ($data as $val) {            $arr[$val['path']] = $val['id'];        }        return array('menus'=>$data,'func'=>$arr);    }    /**     * 获取角色权限ID     * @param unknown $roleId     */   public function getAccessIDs($roleId) {       $data = $this->objModel->select("menu_id")->where("role_id",$roleId)->get();       $arr = array();       if($data) {            foreach ($data as $val) {                $arr[] = $val['menu_id'];            }       }       return $arr;   }   /**    *     * @param unknown $roleId    * @param unknown $menuIds    * @param string $allMenus 权限范围,如果为false不验证    */   public function setRole($roleId,$menuIds,$allMenus=false) {              try       {           $result = \DB::transaction(function() use ($roleId, $menuIds,$allMenus)           {               $ok = $this->objModel->where("role_id",$roleId)->delete();               if($ok===false) {                  throwException("删除出错");               }               foreach ($menuIds as $menu_id) {                   if($allMenus !== false) {                       if(!in_array($menu_id, $allMenus)) {                           throwException("涉及到越权操作");                       }                   }                   $add['role_id'] = $roleId;                   $add['menu_id'] = $menu_id;                                      $ok = $this->objModel->create($add);                   if(!$ok) {                       throwException("添加出错");                   }               }                             return true;           });       }       catch (\Exception $e)       {           $result = false;       }              if( ! $result) return $this->setMsg('操作失败');              return true;   }       }
 |