LoginAuthMiddleware.php 2.2 KB
<?php

namespace App\Http\Middleware\Bside;

use App\Enums\Common\Code;
use App\Models\ProjectMenu;
use App\Models\ProjectRole as ProjectRoleModel;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Cache;
use Illuminate\Http\Exceptions\HttpResponseException;
class LoginAuthMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
     */
    public function handle(Request $request, Closure $next)
    {
        $token = $request->header('token');
        var_dump(Cache::get($token));
        die();
        if(!isset($token) || empty($token)){
            $this->response('当前用户未登录',Code::USER_ERROR);
        }
        $info = Cache::get($token);
        if(empty($info)){
            $this->response('当前用户未登录',Code::USER_ERROR);
        }
        //操作权限设置
        $projectRoleModel = new ProjectRoleModel();
        $role_info = $projectRoleModel->read(['id'=>$info['role_id']]);
        //获取当前操作的控制器与方法
        $action = $request->route()->getAction();
        //查询当前用户是否拥有权限操作
        $projectMenuModel = new ProjectMenu();
        $menu_id = $projectMenuModel->read(['action'=>$action['as']],['id']);
        if(strpos($role_info['role_menu'], $menu_id['id']) < 0){
            $this->response('当前用户没有权限',Code::USER_ERROR);
        }
        return $next($request);
    }
    /**
     * @name 统一返回参数
     * @return void
     * @author :liyuhang
     * @method
     */
    public function response($msg,$code,$data = [],$result_code = 200,$type = 'application/json'){
        $code === null && $code = $result_code;
        $result = [
            'msg' =>$msg,
            'code'=>$code,
            'data'=>$data
        ];
        $header['token'] = $type;
        $response =  response($result,$result_code,$header);
        throw new HttpResponseException($response);
    }

}