Files
claude-code/packages/remote-control-server/src/auth/token.ts
2026-05-01 21:39:30 +08:00

28 lines
833 B
TypeScript

import { storeCreateToken, storeGetUserByToken } from '../store'
let tokenCounter = 0
/** Generate a random session token and associate it with a user */
export function issueToken(username: string): {
token: string
expires_in: number
} {
// Use crypto.getRandomValues for uniqueness
const bytes = new Uint8Array(16)
crypto.getRandomValues(bytes)
const hex = Array.from(bytes)
.map(b => b.toString(16).padStart(2, '0'))
.join('')
const token = `rct_${tokenCounter++}_${hex}`
storeCreateToken(username, token)
return { token, expires_in: 86400 }
}
/** Resolve a token to a username. Returns null if invalid. */
export function resolveToken(token: string | undefined): string | null {
if (!token) return null
const entry = storeGetUserByToken(token)
if (!entry) return null
return entry.username
}