webman_ad/app/middleware/OauthCheck.php

62 lines
2.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\middleware;
use app\model\ThirdUserAdvertiser;
//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');
// 通过 advertiser_id 查询 ThirdUserAdvertiser联表查询 ThirdUser 数据
$userAdvertiser = ThirdUserAdvertiser::with('googleUser') // 联表查询 user 关联
->where('advertiser_id', $customerId) // 根据 advertiser_id 查询
->find(); // 获取第一个结果
// 如果找到广告主数据
if ($userAdvertiser && $userAdvertiser->googleUser) {
// 获取关联用户的 access_token
$accessToken = $userAdvertiser->googleUser->access_token;
if (empty($accessToken)) {
return Json([
'code' => 300,
'msg' => 'AccessToken 为空或过期',
'data' => []
]);
}
$request->login_customer_id = $customerId;
$request->access_token = $accessToken;
} else {
return Json([
'code' => 300,
'msg' => '未找到该广告主或关联的用户',
'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);
}
}