Files
haomingming a66370bf91
Build Docker / build (push) Canceled after 0s
路由白名单
2026-09-07 11:28:40 +08:00

108 lines
4.3 KiB
PHP

<?php
namespace App\Utils;
// 权限工具类
class Auth
{
// 白名单接口
public array $whiteApi;
// 特殊接口 存在需要
public array $specialApi;
public function __construct()
{
$this->whiteApi = [
"/" => "*",
"/patient/index" => "get",
"/login/wechat_mobile_login" => "post", // 微信登陆
"/login/mobile_login" => "post", // 手机号登陆
"/code/phone" => "post",// 获取手机号验证码
"/patient/doctor/inquiry" => "get", // 获取问诊医生列表
"/doctor/info/inquiry/" => "get", // 获取医生详情-问诊
"/doctor/inquiry/service/" => "get", // 获取医生开启的服务列表
"/patient/doctor/evaluation/" => "get", // 获取医生评价
"/basic/disease/expertise" => "get",// 疾病专长列表-搜索使用
"/patient/article/science" => "get", // 科普文章分页
"/patient/article/science/list" => "get", // 科普文章列表
"/evaluation" => "get", // 获取医生评价列表
"/area/province" => "get",// 获取省份信息
"/area/city" => "get", // 获取城市信息
"/area/county" => "get", // 获取区县信息
"/basic/agreement/" => "get", // 获取协议内容
"/callback/wxpay/inquiry/success" => "post", // 微信问诊支付回调
"/callback/wxpay/inquiry/refund" => "post", // 微信问诊退款回调
"/callback/wxpay/product/success" => "post", // 微信药品支付回调
"/callback/wxpay/product/refund" => "post", // 微信药品退款回调
"/callback/wxpay/detection/success" => "post", // 微信检测订单支付回调
"/callback/wxpay/detection/refund" => "post", // 微信检测订单退款回调
"/callback/wxpay/service/success" => "post", // 微信服务包订单支付回调
"/callback/wxpay/service/refund" => "post", // 微信服务包订单退款回调
"/callback/im" => "post", // im回调
"/callback/platform/logistics" => "post", // 处方平台物流回调
"/callback/logistics" => "post", // 快递100订阅回调
"/popup" => "get", // 获取弹窗数据
"/basic/keyword/search" => "get", // 获取热门搜索关键词
"/test/uninquiry" => "get", // 获取未接诊的医生
"/test/refund" => "post", // 测试退款
"/test/error" => "get", // 测试报错
"/test" => "get", // 测试
"/callback/detection" => "post", // 检测所结果回调
"/callback/video/trtc" => "post", // 音视频回调
"/callback/video/recording" => "post", // 音视频回调
];
}
/**
* 检测接口白名单
* @param string $path_info 请求地址 /v1/user/info
* @param string $method 请求方式 POST
* @return bool true:在白名单 false:不在白名单
*/
public function checkApiWhiteList(string $path_info,string $method): bool
{
// 版本白名单-app使用
/*$version_white_list = config('jwt.version_white_list', []);
if (!empty($version_white_list)) {
foreach ($version_white_list as $value) {
$req = substr_compare($path_info,"/" . $value,0,strlen($value));
if ($req === 0){
return true;
}
}
}*/
if(!empty($this->whiteApi)){
// 去除id在路由中的情况
$path_info = preg_replace("/(\d+)/",'',$path_info);
if (array_key_exists($path_info, $this->whiteApi)) {
if ($this->whiteApi[$path_info] == '*') {
return true;
}
if (stristr($this->whiteApi[$path_info], $method)) {
return true;
}
}
}
return false;
}
/**
* 检测token的快过期时间.
* @param array $token token
*/
public function checkTokenExpTime(array $token): bool
{
$time_difference = $token['exp'] - time();
// 设定24小时过期时间
if ($time_difference < (3600 * 24)) {
return true;
}
return false;
}
}