Runner: Zeiten-Skript beim Veröffentlichen einsetzen
injectIntoHtml nimmt eine Marke je Tag (geprüft gegen data-wk-[a-z]+), injectZeiten setzt den data-wk-zeiten-Tag ohne Datenschutzseite ein, validateJob lässt nur den siteKey durch, ZEITEN_PUBLIC_BASE in der Konfiguration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a198c472bd
commit
a2d11ad6c4
5 files changed
+297
-10
No files matched your search
@@ -64,10 +64,19 @@ export function validateJob(body) {
|
||||
}
|
||||
analytics = { siteKey: a.siteKey, color: a.color, privacy };
|
||||
}
|
||||
// Öffnungszeiten live: nur der siteKey, Zusatzfelder werden verworfen.
|
||||
let zeiten;
|
||||
if (body.zeiten !== undefined && body.zeiten !== null) {
|
||||
const z = body.zeiten;
|
||||
if (!z || typeof z !== 'object' || Array.isArray(z)) return { ok: false, error: 'Ungültige Zeiten-Angaben' };
|
||||
if (typeof z.siteKey !== 'string' || !RE_SITE_KEY.test(z.siteKey)) return { ok: false, error: 'Ungültiger Zeiten-Schlüssel' };
|
||||
zeiten = { siteKey: z.siteKey };
|
||||
}
|
||||
// Whitelist: keine ungeprüften Client-Felder im Job
|
||||
const job = { sub, repo, sha, branch, mode, env };
|
||||
if (index !== undefined) job.index = index;
|
||||
if (displayName !== undefined) job.displayName = displayName;
|
||||
if (analytics !== undefined) job.analytics = analytics;
|
||||
if (zeiten !== undefined) job.zeiten = zeiten;
|
||||
return { ok: true, job };
|
||||
}
|
||||
Reference in new issue
Block a user