/* =================================================================== Startseite nach dem Anmelden. Die Seite ist bereits serverseitig geschützt (workspace.js). Dieses Skript holt nur noch, WER angemeldet ist, und regelt das Abmelden. =================================================================== */ (() => { 'use strict'; const ROLLENTEXT = { admin: 'Management · Gesamtübersicht und Freigaben', creator: 'Creator · dein eigener Bereich', scout: 'Scout · deine Pipeline und Kontakte', }; /* Bereiche aus dem Konzept, mit der Phase aus dem Umsetzungsplan. `rollen` steuert, wem ein Bereich überhaupt angezeigt wird - schon jetzt, damit die Trennung von Anfang an sichtbar ist. */ const BEREICHE = [ { name: 'Dashboard', phase: 1, rollen: ['admin', 'creator', 'scout'] }, { name: 'Creator-Profile', phase: 1, rollen: ['admin'] }, { name: 'Mein Profil', phase: 1, rollen: ['creator'] }, { name: 'Aufgaben', phase: 1, rollen: ['admin', 'creator'] }, { name: 'Kalender', phase: 1, rollen: ['admin', 'creator', 'scout'] }, { name: 'Dateien', phase: 1, rollen: ['admin', 'creator'] }, { name: 'LIVE-Analyse', phase: 2, rollen: ['admin', 'creator'] }, { name: 'Content-Planung', phase: 2, rollen: ['admin', 'creator'] }, { name: 'Technik', phase: 2, rollen: ['admin', 'creator'] }, { name: 'Community', phase: 2, rollen: ['admin', 'creator'] }, { name: 'Schutz & Regeln', phase: 2, rollen: ['admin', 'creator'] }, { name: 'Reports & Review', phase: 2, rollen: ['admin', 'creator'] }, { name: 'Calls', phase: 3, rollen: ['admin', 'creator', 'scout'] }, { name: 'Scout-Pipeline', phase: 3, rollen: ['admin', 'scout'] }, { name: 'Automationen', phase: 4, rollen: ['admin'] }, ]; const $ = (id) => document.getElementById(id); async function laden() { let ich; try { const antwort = await fetch('/workspace/api/ich', { credentials: 'same-origin' }); if (!antwort.ok) { location.assign('/workspace/'); return; } ich = await antwort.json(); } catch { location.assign('/workspace/'); return; } $('wer').textContent = `${ich.name} · ${ich.rolle}`; $('gruss').textContent = `Willkommen, ${ich.name}`; $('rollentext').textContent = ROLLENTEXT[ich.rolle] || ich.rolle; const liste = $('bereiche'); for (const b of BEREICHE.filter((b) => b.rollen.includes(ich.rolle))) { const li = document.createElement('li'); li.className = 'bereich'; li.dataset.phase = String(b.phase); const name = document.createElement('span'); name.className = 'bereich__name'; name.textContent = b.name; const stand = document.createElement('span'); stand.className = 'bereich__stand'; stand.textContent = b.phase === 1 ? 'als Nächstes' : `Phase ${b.phase}`; li.append(name, stand); liste.append(li); } } $('abmelden').addEventListener('click', async () => { try { await fetch('/workspace/api/abmelden', { method: 'POST', credentials: 'same-origin' }); } catch { /* Auch ohne Antwort weiterleiten - das Cookie ist dann spätestens abgelaufen. */ } location.assign('/workspace/'); }); laden(); })();