LoginAuthMiddleware.php 1.8 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');
        if(!isset($token) || empty($token)){
            $res = [
                'code'=>'A00010',
                'msg' =>'当前用户未登录'
            ];
            return response(['code'=>Code::USER_ERROR,'msg'=>'当前用户未登录']);
        }
        $info = Cache::get($token);
        if(empty($info)){
            return response(['code'=>Code::USER_ERROR,'msg'=>'当前用户未登录']);
        }
        //操作权限设置
        $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($menu_id !== false){
            if(strpos($role_info['role_menu'], $menu_id['id']) < 0){
                return response(['code'=>Code::USER_ERROR,'msg'=>'当前用户没有权限']);
            }
        }
        return $next($request);
    }

}