Have game server reject banned players (#3683)

## Description:

The jwt now contains a "role" field, the game server checks if that role
=== "banned", and rejects them from connecting to games

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced

## Please put your Discord username so you can be contacted if a bug or
regression is found:

evan
This commit is contained in:
Evan
2026-04-15 12:37:21 -07:00
committed by GitHub
parent 4780eff25b
commit 57aaf59220
2 changed files with 10 additions and 0 deletions
+5
View File
@@ -30,6 +30,11 @@ export const TokenPayloadSchema = z.object({
iss: z.string(),
aud: z.string(),
exp: z.number(),
role: z
.enum(["root", "admin", "mod", "flagged", "banned"])
// In case new roles are added in the future.
.or(z.string())
.optional(),
});
export type TokenPayload = z.infer<typeof TokenPayloadSchema>;
+5
View File
@@ -344,6 +344,11 @@ export async function startWorker() {
}
const { persistentId, claims } = result;
if (claims?.role === "banned") {
ws.close(1002, "Account Banned");
return;
}
if (clientMsg.type === "rejoin") {
log.info("rejoining game", {
gameID: clientMsg.gameID,