feat(core): harden sessions settlement and credit activity
Some checks failed
lotterLaravel CI / test (push) Has been cancelled
lotterLaravel E2E / e2e-api (push) Has been cancelled

This commit is contained in:
wchino
2026-07-22 20:53:43 +08:00
parent 35f6e46958
commit 15bd997c4e
48 changed files with 1920 additions and 93 deletions

View File

@@ -192,6 +192,14 @@ final class PlayerTokenResolver
throw new PlayerAuthenticationException('Token 已因密码变更失效', ErrorCode::PlayerTokenInvalid->value);
}
$sessionVersion = (int) data_get($claims, 'session_version', 0);
if ($sessionVersion !== (int) ($player->native_session_version ?? 0)) {
throw new PlayerAuthenticationException(
'当前会话已被同账号的较新登录替换',
ErrorCode::PlayerSessionReplaced->value,
);
}
$player->forceFill(['last_login_at' => now()])->save();
return $player->refresh();