karim
bd85570259
dialog: Diskussionsplattform mit Foren, Rollen & Moderation + RLS-Fix
...
Auth/RLS-Fix (Schreiben gab 400):
- supabase.js: eigener supabaseAuth-Client für Login/Token-Check, damit
signInWithPassword den Service-Daten-Client nicht prozessweit aufs
User-Token umstellt (sonst lief insert als role=authenticated → RLS-Block).
Rollen (admin > editor > user):
- auth.js: roleOf() aus app_metadata.role + ADMIN_EMAILS, requireModerator.
- users.js: Rolle anzeigen/setzen über GoTrue app_metadata; .env-Admins fix.
Datenmodell (schema.sql):
- forums (Kategorien) + threads; Seed Allgemein/Projekte/Technik/Off-Topic
und Sonder-Kategorie Beiträge. Library-Beiträge werden als Threads
gespiegelt (dialog-store.syncLibrary).
API (routes/dialog.js, dialog-store.js):
- öffentlich: /api/forums, /api/forums/:slug, /api/recent, /api/thread
- eingeloggt: POST /api/threads (Thread starten, nur in Foren)
- Moderation: /api/mod/* (sperren/ausblenden), Admin: /api/admin/forums CRUD
- comments: Lock-Prüfung beim Schreiben, Moderation darf jede löschen.
Frontend:
- static/dialog.js: Router (Übersicht-Split-View | Forum | Thread),
neuer Thread, Mod-Leiste, subtiles Login (dezente Zeile statt Formular).
- Admin-UI: Tabs Foren + Moderation, Rollen-Dropdown bei Autor:innen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-05-31 16:09:19 +02:00
karim
1ff2eb48f9
dialog: auf eigene Seite auslagern — Beitrag bleibt sauber
...
- single.html: eingebetteter Dialog raus, stattdessen „→ Dialog"-Link
- neue /dialog/-Seite (content/dialog.md + layouts/_default/dialog.html) mit
Thread aus ?thread=, Rücklink zum Beitrag
- dialog.js liest Thread aus data-thread ODER ?thread=
- Styling: Pill-Link am Beitragsende, zentrierte Dialog-Seite
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-05-31 14:14:21 +02:00