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