INNER CODE UNIT · TypeScript
makeDefaultResolver
colyseus/colyseus · packages/admin/src-backend/index.ts:342
function makeDefaultResolver(allowDevHeader: boolean, database: GameDatabase) {
return async function defaultResolve(ctx: { getHeader: (k: string) => string | null }): Promise<string | undefined> {
const session = await readSessionFromHeader(ctx.getHeader('cookie'));
if (session) {
// Token-version revocation check. The JWT carries the `tv` the
// user had at sign time; if the row's current version is higher,
// the session was revoked (password reset, "sign out everywhere",
// forced rotation) and we reject the cookie as if it were
// unauthenticated. Sessions issued before `tv` was added (no
// `tv` claim) are accepted — backward compat with cookies still
// in flight when the column lands.
if (session.tv !== undefined) {
const current = await database.auth.getTokenVersion(session.userId);
if (current !== session.tv) { return undefined; }
}
return session.userId;
}
if (allowDevHeader) {