32 lines
728 B
TypeScript
32 lines
728 B
TypeScript
export type DeviceAuthPayloadParams = {
|
|
deviceId: string;
|
|
clientId: string;
|
|
clientMode: string;
|
|
role: string;
|
|
scopes: string[];
|
|
signedAtMs: number;
|
|
token?: string | null;
|
|
nonce?: string | null;
|
|
version?: "v1" | "v2";
|
|
};
|
|
|
|
export function buildDeviceAuthPayload(params: DeviceAuthPayloadParams): string {
|
|
const version = params.version ?? (params.nonce ? "v2" : "v1");
|
|
const scopes = params.scopes.join(",");
|
|
const token = params.token ?? "";
|
|
const base = [
|
|
version,
|
|
params.deviceId,
|
|
params.clientId,
|
|
params.clientMode,
|
|
params.role,
|
|
scopes,
|
|
String(params.signedAtMs),
|
|
token,
|
|
];
|
|
if (version === "v2") {
|
|
base.push(params.nonce ?? "");
|
|
}
|
|
return base.join("|");
|
|
}
|