Files
hapi/server/src/utils/accessToken.ts
T
weishu e821458af8 feat: add namespace-based multi-user isolation
Implement namespace support across sessions, machines, and users for multi-user server deployments. Add access control with specific error reasons (namespace-missing, access-denied, not-found) and database schema updates with namespace columns and indexes.
2025-12-31 21:56:01 +08:00

35 lines
795 B
TypeScript

export const DEFAULT_NAMESPACE = 'default'
export type ParsedAccessToken = {
baseToken: string
namespace: string
}
export function parseAccessToken(raw: string): ParsedAccessToken | null {
if (!raw) {
return null
}
const trimmed = raw.trim()
if (!trimmed) {
return null
}
const separatorIndex = trimmed.lastIndexOf(':')
if (separatorIndex === -1) {
return { baseToken: trimmed, namespace: DEFAULT_NAMESPACE }
}
const baseToken = trimmed.slice(0, separatorIndex)
const namespace = trimmed.slice(separatorIndex + 1)
if (!baseToken || !namespace) {
return null
}
if (baseToken.trim() !== baseToken || namespace.trim() !== namespace) {
return null
}
return { baseToken, namespace }
}