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) {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…