Files
s4luorth 1eb3b14a13 Board strukturiert + neue Mitarbeiter-Uebersicht (A)
produktion:
- Karte in klaren Bloecken: getoenter Kopf (Identitaet + Status), Specs als
  beschriftete Kacheln, Druckstatus-Leiste (Brief/Kuvert getrennt), beschriftete
  Notiz, strukturiertes "Weiteres" mit beschrifteten Feldern. Kein linker
  Farbrand mehr. Groessere Schrift. Suche aus dem Board entfernt.

Neue Extension skrift-uebersicht (Modul, read-only fuer Mitarbeiter):
- Kompakte Tabelle: Auftrag/Name, erster+letzter Empfaenger, Format, faellig,
  Druck Brief/Kuvert getrennt, eingeplant, Status. Suche/Filter.
- Maschinen-Panel: "Format einlegen -> starten" (setzt current_format).

access: Staff sieht jetzt nur noch skrift-uebersicht.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-01 10:53:22 +02:00

35 lines
1.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 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);
});
};