init: 项目初始代码
This commit is contained in:
80
app/index/middleware/Auth.php
Normal file
80
app/index/middleware/Auth.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
namespace app\index\middleware;
|
||||
|
||||
use app\index\model\Language;
|
||||
use app\index\model\Site;
|
||||
use think\facade\Cache;
|
||||
|
||||
/**
|
||||
* 全局路由中间件-验证接口请求的有效性
|
||||
* Class Auth
|
||||
* @package app\index\middleware
|
||||
*/
|
||||
class Auth
|
||||
{
|
||||
public function handle($request, \Closure $next)
|
||||
{
|
||||
header("Access-Control-Allow-Origin:*");
|
||||
header("Access-Control-Allow-Methods:GET, POST, PATCH, PUT, DELETE,OPTIONS");
|
||||
header("Access-Control-Allow-Headers:Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-Requested-With,x_requested_with,x-token");
|
||||
//获取请求过来的域名与后台绑定域名是否一致
|
||||
$url = $request->host();
|
||||
//兼容老数据,1=英文,或者传 us-en, zh-cn,jp
|
||||
$language = $request->param()['language_id']??'zh-cn';
|
||||
|
||||
if ($language == 'zh-cn') {
|
||||
$languageId = 1;
|
||||
} else {
|
||||
if (is_numeric($language)) {
|
||||
show(-999,lang('无效的语言包请求'));
|
||||
}
|
||||
$lang = new Language();
|
||||
$info = $lang->where('code',$language)->where('status',0)->findOrEmpty()->toArray();
|
||||
if (empty($info)) {
|
||||
show(-998,lang('语言包ID不正确'));
|
||||
}
|
||||
$languageId = $info['id'];
|
||||
}
|
||||
// 查找当前品牌所有的语言站点
|
||||
$site = new Site();
|
||||
$domain = [];
|
||||
$languageCode = '';
|
||||
if (Cache::has('site_info')) {
|
||||
$siteInfo = Cache::get('site_info');
|
||||
$languageCode = Cache::get('language_info_'.$languageId) ?: 'zh-cn';
|
||||
$domain = array_column($siteInfo,'domain');
|
||||
} else {
|
||||
$siteInfo = $site->where(['platform_id'=>1,'status'=>0])->select()->toArray();
|
||||
$languageInfo = $site->where(['language_id'=>$languageId,'platform_id'=>1,'status'=>0])->select()->toArray();
|
||||
if (!empty($languageInfo)) {
|
||||
$languageCode = $languageInfo[0]['code'] ?? 'zh-cn';
|
||||
}
|
||||
|
||||
if (!empty($siteInfo)) {
|
||||
$domain = array_column($siteInfo,'domain');
|
||||
}
|
||||
Cache::set('site_info',$siteInfo,7200);
|
||||
Cache::set('language_info_'.$languageId,$languageCode,7200);
|
||||
}
|
||||
|
||||
//检测域名是否合法,添加测试域名
|
||||
$devDomain = ['setmspace.test','setmspace.com','setmspace.cn','dev.setm.f2b211.com'];
|
||||
$domain = array_column($domain,'domain');
|
||||
$wholeDomain = array_merge($devDomain,$domain);
|
||||
|
||||
if (!in_array($url,$wholeDomain)) {
|
||||
//表示请求域名不是绑定的域名,抛出异常
|
||||
show(-995,lang("绑定域名不正确,请检查后台设置"));
|
||||
}
|
||||
|
||||
//老站点英文站兼容密钥
|
||||
$request->platform_id = 1;/*强制为1*/
|
||||
$request->language_id = $languageId;
|
||||
$request->language_code = $languageCode;
|
||||
//组装语言ID请求数据
|
||||
$post = $request->post();
|
||||
$post['language_id'] = $languageId;
|
||||
$request->withPost($post);
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user