token = $this->request->param('token','','trim'); if (!action_in_arr($this->noLogin)){ if($this->token=='')throw new \Exception('token不能为空',101); $this->Auth(); } } /**授权token鉴定 * @return \think\response\Json|void */ public function Auth(){ $User = \app\common\User::instance(); $reLaNo= $this->request->param('relaComNo','','trim'); $User->init($this->token); if (!$User->isLogin()) throw new \Exception($User->getError(),$User->getErroCode()); $this->uid = $User->id; $this->uname = $User->nickname; $this->level = $User->level; $this->roleid =1; if($User->level==2){ $this->roleid = \app\admin\model\UserRole::GetRoleIdByCompnyNoAndUid($reLaNo,$User->id); if($this->roleid==='') throw new \Exception( '没有该公司的角色或角色已禁用',101); } } /**校验所有权限 *合并共享 及分享出去的权限 * @return array */ public function checkRole(){ $action = [ 'action_conllect'=>'', 'write'=>[], 'platform'=>[], 'roleid'=>$this->roleid ]; if($this->level==2){ $roleinfo =\app\admin\model\RoleAction::where('roleid',$this->roleid)->findOrEmpty(); $action['action_conllect'] = $roleinfo->action_conllect; $action['write'][] = $this->uid; $group= RoleGroup::whereFindInSet('group_user',$this->uid)->column("id"); $where = ["to_user"=>$this->uid]; if(!empty($group)){ $where['to_group'] =$group; } $platform = \app\admin\model\UserPlatform::where(['uid' => $this->uid, 'is_del' => 0])->findOrEmpty(); $action['platform'] = $platform->platform??[]; $share = RoleShare::where(['is_del' => 0, 'status' => 1])->whereOr($where)->select(); if(!$share->isEmpty()){ $share->each(function ($item) use (&$action) { switch ($item->action) { case '': case 0: if ($item->share_user!='') $action['write'][] =$item->share_user; if($item->action_conllect!=''){ $conllect = \app\admin\model\Action::whereIn("menuid",$item->action_conllect)->where(["action_code"=>"001"])->column("id"); $action['action_conllect'] = array_unique(array_merge($action['action_conllect'],$conllect)) ; } break; case 1: if($item->share_user!=''){ $action['write'][] =$item->share_user; $user = \app\admin\model\UserRole::where(["uid"=>$item->share_user,"is_del"=>0,"status"=>1])->findOrEmpty(); if(!$user->isEmpty()){ $conllect = \app\admin\model\Action::whereIn("menuid",$item->action_conllect)->column("id"); $action['action_conllect'] = array_unique(array_merge($action['action_conllect'],array_intersect($conllect, $item->action_conllect))) ; } } break; } }); } $resign = \app\admin\model\ResignInfo::where(['hand_uid'=>$this->uid,'is_del'=>0,'status'=>4])->column(['resign_uid']); if(!empty($resign)){ $action['write'] = array_unique(array_merge($action['write'],$resign)); } $action['roleid'] = $this->roleid; return $action; } } }