You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
<?php
|
|
|
|
namespace app\home\middleware;
|
|
|
|
use app\model\UserModel;
|
|
use think\facade\Cache;
|
|
use think\facade\Config;
|
|
use think\facade\Lang;
|
|
use think\facade\Log;
|
|
use think\Request;
|
|
|
|
/**
|
|
* @desc 必须要登陆的接口 校验是否登陆
|
|
*/
|
|
class CheckUserMiddleware
|
|
{
|
|
|
|
public function handle(Request $request, \Closure $next)
|
|
{
|
|
// OPTIONS 请求直接返回空响应
|
|
if ($request->method(true) === 'OPTIONS') {
|
|
return response()->send();
|
|
}
|
|
// 设置多语言
|
|
Config::set(['default_lang' => 'zh-jp'], 'lang'); // P2 默认设置日语
|
|
$request->lang = Config::get('lang.default_lang');
|
|
$header = $request->header();
|
|
if (isset($header['language'])) {
|
|
$lang_list = Config::get('lang.allow_lang_list');
|
|
$lang = strtolower($header['language']);
|
|
if (in_array($lang, $lang_list)) {
|
|
Lang::setLangSet($lang);
|
|
$request->lang = $lang;
|
|
}
|
|
}
|
|
|
|
if (!empty($header['token']) && is_string($header['token'])) {
|
|
$tokenUserKey = 'TOKEN:USER:' . $header['token'];
|
|
$userId = Cache::store('redis')->get($tokenUserKey);
|
|
if ($userId && $userId >= 0) {
|
|
$request->userId = $userId;
|
|
}
|
|
}
|
|
|
|
return $next($request);
|
|
}
|
|
}
|
|
|