webman_ad/app/middleware/OauthCheck.php
2025-01-03 15:35:18 +08:00

66 lines
2.2 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)->find();
if ($thirdUser) {
// 获取 access_token
$request->access_token = $thirdUser->access_token;
// 获取关联的广告主数据
$advertiser = $thirdUser->advertisers()->find(); // 获取第一个广告主记录
if ($advertiser) {
// 获取 google_login_customer_id
$request->login_customer_id = $advertiser->google_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);
}
}