mirror of
https://github.com/wu736139669/hapi.git
synced 2026-10-21 21:29:47 +00:00
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.
35 lines
795 B
TypeScript
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 }
|
|
}
|