Files
jtlPosSync/src/endpoints/client.js
2026-07-06 01:31:11 +02:00

72 lines
1.7 KiB
JavaScript

import { sendJson, serverTimestamp } from '../http.js';
export const method = 'GET';
export const path = '/v1/client';
function buildClientStep1(config) {
const {
authToken,
certificateFingerprint,
certificateSerialNumber,
mandantId,
serverFingerprint,
} = config;
return {
authCode: null,
authToken,
certificateFingerprint,
certificateSerialNumber,
mandantId,
mandantName: null,
mandantDatabase: null,
serverFingerprint,
name: null,
serverTimestamp: serverTimestamp(),
};
}
function buildClientStep2(authCode, config) {
const {
authToken,
certificateFingerprint,
certificateSerialNumber,
mandantId,
mandantName,
mandantDatabase,
} = config;
return {
authCode,
authToken,
certificateFingerprint,
certificateSerialNumber,
mandantId,
mandantName,
mandantDatabase,
serverFingerprint: null,
name: null,
serverTimestamp: serverTimestamp(),
};
}
export function handle(req, res, { url, pairingStore, config }) {
const authCode = url.searchParams.get('authCode') || '';
const name = url.searchParams.get('name') || 'JTL-POS';
if (authCode.length <= 4 && authCode.length > 0) {
return sendJson(res, 200, buildClientStep1(config));
}
if (authCode.length === 6) {
if (pairingStore.hasPairingCode(authCode)) {
pairingStore.revokePairingCode(authCode);
pairingStore.registerDevice(config.authToken, name);
return sendJson(res, 200, buildClientStep2(authCode, config));
}
return sendJson(res, 400, { Message: 'Der Authentifizierungscode ist falsch.' });
}
return sendJson(res, 400, { Message: 'Keinen passenden Authentifizierungscode gefunden.' });
}