68 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace app\middleware;
 | |
| 
 | |
| use app\model\ThirdUser;
 | |
| 
 | |
| //use ReflectionClass;
 | |
| use Webman\MiddlewareInterface;
 | |
| use Webman\Http\Response;
 | |
| use Webman\Http\Request;
 | |
| 
 | |
| class OauthCheck implements MiddlewareInterface
 | |
| {
 | |
|     public function process(Request $request, callable $handler): Response
 | |
|     {
 | |
| 
 | |
|         $requestData = $request->all(); // 获取请求数据
 | |
| //        $customerId  = isset($requestData['ad_customer_id']) ? $requestData['ad_customer_id'] : getenv('GOOGLE_ADS_CUSTOMER_ID');
 | |
|         $uid = $request->jwtClaims['uid'];
 | |
|         // 查询指定 user_id 的 ThirdUser
 | |
|         $thirdUser = ThirdUser::where('user_id', $uid)->where('third_type', 'google')->find();
 | |
| 
 | |
|         if ($thirdUser && $thirdUser->access_token) {
 | |
|             // 获取 access_token
 | |
|             $request->refresh_token = $thirdUser->access_token;
 | |
| 
 | |
|             // 获取关联的广告主数据
 | |
|             $advertiser = $thirdUser->advertisers()->find(); // 获取第一个广告主记录
 | |
| 
 | |
|             if ($advertiser) {
 | |
|                 // 获取 google_login_customer_id
 | |
|                 $request->login_customer_id = $advertiser->google_login_customer_id;
 | |
| //                dump( $request->access_token,$request->login_customer_id);
 | |
|             } else {
 | |
| 
 | |
| //                return Json([
 | |
| //                    'code' => 0,
 | |
| //                    'msg' => 'Ads Data is ready to collect,please wait',
 | |
| //                    'data' => []
 | |
| //                ]);
 | |
|             }
 | |
|         } else {
 | |
|             return Json([
 | |
|                 'code' => 300,
 | |
|                 'msg' => 'AccessToken 为空或过期',
 | |
|                 'data' => []
 | |
|             ]);
 | |
|         }
 | |
| 
 | |
| //        if (session('user')) {
 | |
| //            // 已经登录,请求继续向洋葱芯穿越
 | |
| //            return $handler($request);
 | |
| //        }
 | |
| 
 | |
|         // 通过反射获取控制器哪些方法不需要登录
 | |
| //        $controller  = new ReflectionClass($request->controller);
 | |
| //        $noNeedLogin = $controller->getDefaultProperties()['noNeedLogin'] ?? [];
 | |
| 
 | |
|         // 访问的方法需要登录
 | |
| //        if (!in_array($request->action, $noNeedLogin)) {
 | |
| //            // 拦截请求,返回一个重定向响应,请求停止向洋葱芯穿越
 | |
| //            return redirect('/user/login');
 | |
| //        }
 | |
| 
 | |
|         // 不需要登录,请求继续向洋葱芯穿越
 | |
|         return $handler($request);
 | |
|     }
 | |
| } |