feat: 添加 JWT 支持与开发环境配置,更新 API 路由与中间件

This commit is contained in:
2026-05-08 14:41:01 +08:00
parent bbf58cb076
commit 9f8080cefe
18 changed files with 383 additions and 14 deletions

View File

@@ -7,7 +7,9 @@ use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* 后台 API:后续在此校验管理员登录(如 Sanctum RBAC
* 后台 API 守卫:后续在此注入 Sanctumadmin_users与权限校验
*
* 当前为占位直通,勿在生产暴露敏感 admin 路由前长期保持空实现。
*/
class EnsureAdminApi
{

View File

@@ -2,17 +2,32 @@
namespace App\Http\Middleware;
use App\Exceptions\PlayerAuthenticationException;
use App\Services\PlayerTokenResolver;
use App\Support\ApiResponse;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* 玩家端 API后续在此校验 SSO / Bearer Token并解析当前 players.id
* 玩家端受保护路由前置:解析 Authorization失败时直接返回 { code, msg, data },不进入控制器
*
* 成功后在 request 上挂 `lottery_player`,控制器内使用 `$request->lotteryPlayer()`
*(由 AppServiceProvider 注册的宏,返回 ?Player
*/
class EnsurePlayerApi
{
public function handle(Request $request, Closure $next): Response
{
try {
$player = app(PlayerTokenResolver::class)->resolve($request);
} catch (PlayerAuthenticationException $e) {
return ApiResponse::error($e->getMessage(), $e->lotteryCode, null, $e->httpStatus);
}
// 使用 attributes避免与 Laravel 内置 input 混淆
$request->attributes->set('lottery_player', $player);
return $next($request);
}
}