feat: 新增文章分类增/删/改/查接口

This commit is contained in:
2025-01-04 18:09:26 +08:00
parent 621706f79f
commit 5197bfd841
15 changed files with 473 additions and 5 deletions

View File

@@ -0,0 +1,77 @@
<?php
declare (strict_types = 1);
namespace app\admin\middleware\v1;
use app\admin\model\v1\LanguageModel;
class Auth extends \thans\jwt\middleware\BaseMiddleware
{
// 获取语言信息
private function setLanguage($request)
{
$code = $request->cookie('lang', 'zh_cn');
$lang = LanguageModel::cache('lang:code.' . $code, 3600, 'lang')
->field(['id', 'name', 'code', 'icon', 'url'])
->withJoin(['country' => ['id', 'name', 'code', 'icon']])
->where('language_model.code', '=', $code)
->find();
if (!is_null($lang)) {
$request->lang_id = $lang['id'];
$request->country_id = $lang->country['id'];
}
}
/**
* 处理请求
*
* @param \think\Request $request
* @param \Closure $next
* @return Response
*/
public function handle($request, \Closure $next)
{
// options 请求过滤
if ($request->isOptions()) {
return response();
}
// 白名单
if (in_array($request->pathinfo(), config('auth.white_list'))) {
return $next($request);
}
try {
// 验证 token
$payload = $this->auth->auth();
// 将用户信息存入请求
$request->uid = $payload['uid'];
// 语言信息
$this->setLanguage($request);
} catch (\thans\jwt\exception\TokenExpiredException $e) {
try {
// 尝试刷新 token
$this->auth->setRefresh();
// 刷新 token
$token = $this->auth->refresh();
$payload = $this->auth->auth(false);
$request->uid = $payload['uid'];
// 语言信息
$this->setLanguage($request);
$response = $next($request);
return $this->setAuthentication($response, $token);
} catch (\thans\jwt\exception\TokenBlacklistGracePeriodException $e) {
return error('登录已过期', [], 401);
}
} catch (\Throwable $th) {
return error('请先登录', [], 401);
}
return $next($request);
}
}