Files
aiturk-hermes-ide/apps/mobile/src/invite.mjs
T

15 lines
948 B
JavaScript

import { normalizeFingerprint } from './peer-identity.mjs'
export function parseInvite(raw, now = Date.now()) {
if (typeof raw !== 'string' || raw.length > 800) throw new Error('Bu bir AITURK eşleştirme QR kodu değil.')
let data
try { data = JSON.parse(raw) } catch { throw new Error('Bu bir AITURK eşleştirme QR kodu değil.') }
if (!data || data.kind !== 'aiturk-mobile-invite' || data.version !== 2 ||
!/^[0-9a-f-]{36}$/.test(data.inviteId) || !/^[0-9a-f-]{36}$/.test(data.desktopId) ||
!/^[A-Za-z0-9_-]{43}$/.test(data.secret) || !Number.isFinite(Date.parse(data.expiresAt)) ||
Date.parse(data.expiresAt) <= now || Date.parse(data.expiresAt) > now + 11 * 60000)
throw new Error('QR geçersiz veya süresi dolmuş. Bilgisayarda yeni kod oluşturun.')
return { inviteId: data.inviteId, desktopId: data.desktopId, secret: data.secret,
desktopFingerprint: normalizeFingerprint(data.desktopFingerprint) }
}