Run 006: Token management UI
Dokončeno
List/create/delete tokenů s Svelte 5 islandem
Od: 2026-05-10 Do: 2026-05-10 Vytvořeno 10. 5. 2026
5/5
100%
Tasky v runu
Otevřít kanban →| ID | Název | Status | Priorita | Vytvořeno |
|---|---|---|---|---|
| 77 | Helper listTokens + masking Tokens stránky neměly query helper, pattern stejný jako u packages. Přidán listTokens v dashboard-queries (findMany ordered desc by createdAt) + samostatný mask-token util pro UI display ve formátu xxxx…yyyy bez plaintextu. | Hotovo | Střední | 10. 5. 2026 |
| 78 | Create token endpoint Bez Astro endpointu by Svelte island neměl kam fetchnout. Hono /-/npm/v1/tokens potřebuje bearer token (assertTokenAccess) — CF Access user ho nemá. Vytvořen create.ts: POST endpoint pod /dashboard/tokens/create (uvnitř middleware gate), zod validace + delegace na tokenService.createToken, vrací 201 s plaintext tokenem. | Hotovo | Střední | 10. 5. 2026 |
| 79 | Delete token endpoint Form delete potřeboval endpoint pod /dashboard/* (NE /api/*) jinak middleware skipne a Hono catch-all vrátí 404. Vytvořen [token]/delete.ts: POST handler, deleteToken + 303 redirect zpět na list. CF Access JWT funguje jako de facto CSRF token (cross-origin requesty bez něj dostanou 403). | Hotovo | Střední | 10. 5. 2026 |
| 80 | Tokens list stránka Pod /dashboard/tokens neexistovala žádná stránka. Vytvořen tokens/index.astro: SSR fetch tokenů, masked display (jen xxxx…yyyy, plaintext nikdy v listu), scope summary, formátované createdAt, delete form per řádek + mount Svelte create islandu nahoře. | Hotovo | Střední | 10. 5. 2026 |
| 81 | Svelte 5 island na create form Form pro create token potřebuje JS pro one-shot reveal plaintext tokenu (no-JS fallback by chtěl session storage flash). CreateTokenForm.svelte: Svelte 5 island s runes ( pro inputs/loading/error/copied, pro canSubmit), fetch POST → success render token + Copy button (navigator.clipboard) s 2s flash 'Zkopírováno'. | Hotovo | Střední | 10. 5. 2026 |
Screenshoty
0
Žádné screenshoty. Nahraj první.