/** * Skrift – Zugriffsbeschränkung Modulleiste * --------------------------------------------------------------------------- * Directus 11 kennt keine rollenbasierte Modulleiste (nur global). Dieser * settings.read-Filter blendet für NICHT-Admins (= Rolle Staff/Mitarbeiter) alle * Module aus außer: * - skrift-uebersicht (Mitarbeiter-Übersicht + Suche; read-only) * * Admins bleiben unberührt. Kunden nutzen die separate App (app.skrift.de), * nicht die Directus-Admin-Oberfläche – daher reicht der Admin-Check. */ const ERLAUBT = ['skrift-uebersicht']; function nurProduktion(bar) { const vorhanden = (Array.isArray(bar) ? bar : []) .filter((m) => m && m.type === 'module' && ERLAUBT.includes(m.id)); // In fester Reihenfolge, fehlende ergänzen, alle aktiv. return ERLAUBT.map((id) => { const treffer = vorhanden.find((m) => m.id === id); return { ...(treffer || { type: 'module', id }), type: 'module', id, enabled: true }; }); } export default (register) => { register.filter('settings.read', (payload, _meta, context) => { const acc = context && context.accountability; if (!acc || acc.admin) return payload; // Admins unverändert; System-Reads (acc null) ebenfalls. const anpassen = (s) => { if (s && typeof s === 'object' && 'module_bar' in s) s.module_bar = nurProduktion(s.module_bar); return s; }; return Array.isArray(payload) ? payload.map(anpassen) : anpassen(payload); }); };