From 2c14e2ce64f2a07d8499ce614bb1bad4db4572d1 Mon Sep 17 00:00:00 2001 From: Jos Vooges | STH Date: Tue, 22 Sep 2026 23:54:10 +0200 Subject: [PATCH] Silent browser UI login for Viaplay and F1TV via Token Tray. Admin stores email/password; tray uses Playwright against real Chrome to click login and push tokens. --- apps/admin-ui/src/app/scripts/F1tvPanel.tsx | 106 +++++++---- .../admin-ui/src/app/scripts/ViaplayPanel.tsx | 61 +++++-- apps/master-api/src/agent/routes.ts | 88 +++++++++- apps/master-api/src/f1tv/settings.ts | 37 ++++ apps/master-api/src/viaplay/accounts.ts | 15 +- apps/master-api/src/viaplay/settings.ts | 6 +- apps/token-tray/README.md | 44 ++--- apps/token-tray/package.json | 7 +- apps/token-tray/src/jobs.ts | 150 ++++++++++++++++ apps/token-tray/src/login/f1tv.ts | 137 +++++++++++++++ apps/token-tray/src/login/viaplay.ts | 128 ++++++++++++++ apps/token-tray/src/main.ts | 165 +++++------------- 12 files changed, 736 insertions(+), 208 deletions(-) create mode 100644 apps/token-tray/src/jobs.ts create mode 100644 apps/token-tray/src/login/f1tv.ts create mode 100644 apps/token-tray/src/login/viaplay.ts diff --git a/apps/admin-ui/src/app/scripts/F1tvPanel.tsx b/apps/admin-ui/src/app/scripts/F1tvPanel.tsx index c830573..916fd5d 100644 --- a/apps/admin-ui/src/app/scripts/F1tvPanel.tsx +++ b/apps/admin-ui/src/app/scripts/F1tvPanel.tsx @@ -305,10 +305,8 @@ export function F1tvPanel({ onChanged }: { onChanged?: (o: F1tvOverview) => void

F1TV

- Events + F1-hub. Imperva blokkeert server-login: plak{" "} - ascendontoken + entitlementtoken uit een ingelogde - browsersessie. Meerdere accounts: sessies worden als unie samengevoegd; play - round-robint over owners. + Events + F1-hub. Zet e-mail + wachtwoord voor de Token Tray (stille browser-login). + Tokens plakken blijft optioneel. Meerdere accounts: sessies als unie; play round-robint.

@@ -322,42 +320,86 @@ export function F1tvPanel({ onChanged }: { onChanged?: (o: F1tvOverview) => void

Accounts

{accounts.length === 0 ? ( -

Nog geen accounts — voeg e-mail + tokens toe.

+

Nog geen accounts — voeg e-mail + wachtwoord toe.

) : (
    {accounts.map((a) => (
  • -
    - {a.label || a.email} - {healthBadge(a)} - - {a.email} - {" · "} - {a.hasAscendonToken && a.hasEntitlementToken ? "tokens ok" : "tokens missen"} - {a.sessionCount ? ` · ${a.sessionCount} sessies` : ""} - -
    -
    - - - +
    +
    + {a.label || a.email} + {healthBadge(a)} + + {a.email} + {" · "} + {a.hasPassword ? "wachtwoord ok" : "geen wachtwoord"} + {" · "} + {a.hasAscendonToken && a.hasEntitlementToken ? "tokens ok" : "tokens missen"} + {a.sessionCount ? ` · ${a.sessionCount} sessies` : ""} + +
    +
    + + + + +
  • ))} @@ -393,7 +435,7 @@ export function F1tvPanel({ onChanged }: { onChanged?: (o: F1tvOverview) => void />