<?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'];
        $merchant_id = $request->jwtClaims['merchant_id'];
        // 查询指定 user_id 的 ThirdUser
//        $thirdUser = ThirdUser::where('user_id', $uid)->where('third_type', 'google')->find();
        $thirdUser = ThirdUser::where('merchant_id', $merchant_id)->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);
    }
}