Neue Rolle: die linke Hand
Aus dem Auftrag vom 21.09.2026, Abschnitt 6: "Die linke Hand erhaelt
grundsaetzlich dieselben Rechte wie die rechte Hand in allen Bereichen,
die die Modis, Aufgaben, Aufgabenzuweisungen, Uebersichten,
Kommunikation und Auswertungen betreffen. Die linke Hand darf keine
neuen Personen oder Accounts hinzufuegen. Die linke Hand darf keine
privaten bzw. persoenlichen Bereiche oder Informationen von Dogfather
sehen."
GEMESSEN VOR DEM BAUEN: Die Rolle "hand" steht an 35 Stellen im
Servercode und 17-mal in der Rechtetafel. Haette ich ueberall ein
"linke" danebengeschrieben, waere die naechste Stelle, die jemand
hinzufuegt, die erste, die es vergisst -- und eine vergessene Stelle
heisst hier: Die linke Hand sieht etwas nicht, ohne dass jemand merkt,
warum.
DESHALB EINE REGEL STATT DREISSIG ABSCHRIFTEN:
WIE_RECHTE_HAND = new Set(["hand", "linke"]) in workspace.js
istHand(person) fuer die Faehigkeiten
eine Schleife ueber SEITEN fuer die Rechtetafel
Die Schleife gibt der linken Hand jede Seite der rechten -- ausser
fuenf, und jede davon steht mit Grund da:
personen.html legt Personen an
bewerbungen.html fuehrt zu neuen Personen
talente.html fuehrt zu neuen Personen
hilfe.html vertraulicher Meldeweg
rechte.html Rechteverwaltung
Gemessen: 25 Seiten fuer die rechte Hand, 20 fuer die linke. Als
Kacheln: 30 gegen 26 -- die vier verbotenen erscheinen gar nicht erst,
statt beim Antippen abgelehnt zu werden.
ZWEI DINGE, DIE ERST DAS MESSEN GEZEIGT HAT:
(1) OHNE KACHEL AUF DER ANMELDEWAND GIBT ES DIE ROLLE NICHT. Die
Anmeldung sucht `WHERE rolle = ?` auf die angetippte Kachel -- es
gibt keinen rollenuebergreifenden Sonderweg, auch nicht auf der
Crew-Wand. Eine linke Hand haette sich mit dem richtigen Code
NIEMALS anmelden koennen, und der Fehler haette ausgesehen wie ein
falscher Code.
(2) DIE REIHENFOLGE DER DATENBANK-UMSTELLUNG ZAEHLT.
`checkListeErweitern` baut die CHECK-Regel NEU aus der Liste, die
man ihm gibt. Mein Schritt stand zuerst bei der rechten Hand --
der Schritt fuer "gast" darunter nahm die Rolle damit wieder
heraus, denn seine Liste kennt sie nicht. Die Kette ist kumulativ;
neue Schritte gehoeren ans ENDE. Das steht jetzt auch dort.
Dazu zwei kleinere Funde beim Bauen:
- Meine erste Ableitung aenderte die Rollenliste AN ORT UND STELLE.
Mehrere Seiten teilen sich dieselbe Liste (`ALLE`) -- das haette
die Rolle allen Seiten gegeben, die sie benutzen, auch einer
Ausnahme. Faellt nicht auf, solange keine Ausnahme `ALLE` benutzt.
Jetzt eine Kopie je Seite.
- ROLLEN_NAME fehlte der Eintrag: Die linke Hand haette ueberall
"linke" geheissen statt "Linke Hand". Gefunden hat das
pruef-rechtetafel, weil sie diese Tabelle gegen ROLLEN haelt.
Ihre Meldung nennt jetzt, WELCHE Liste was vermisst -- vorher
zeigte sie beim Fehlschlag nur eine der beiden.
NICHT BEKOMMEN -- und jedes einzeln begruendet im Code:
Personen anlegen (ANLEGBAR.linke = []), Rollen aendern
(darfRollenWechseln), Bewerbungen, der vertrauliche Meldeweg. Beim
Meldeweg ist es bewusst das kleinere Recht: Ein Wort von Filipe
oeffnet ihn, eine versehentlich gelesene Meldung laesst sich nicht
zurueckholen.
UNBERUEHRT GEBLIEBEN, obwohl dort "hand" steht:
workspace-leistung.js:406 -- dort heisst "hand" nicht die Rolle,
sondern "von Hand eingetragen".
Am laufenden System gemessen: Datenbank nimmt die Rolle, Anmeldung
HTTP 200, 26 Kacheln, darf_verteilen = true, personen/hilfe/rechte
antworten mit 302, aufgaben und teamlage mit 200.
pruef-rechtetafel 19/0 (war 18/1), pruef-schranke 39/0,
pruef-umstellung 18/0.
This commit is contained in:
@@ -67,6 +67,11 @@
|
||||
* Rolle nur in einer der beiden Listen steht. */
|
||||
export const ALLE_ROLLEN = [
|
||||
"spicy", "admin", "manager", "scout", "creator", "hand", "modi",
|
||||
/* DIE LINKE HAND (21.09.2026). Dieselbe Liste wie ROLLEN in
|
||||
workspace.js -- pruef-rechtetafel haelt beide gegeneinander und
|
||||
wird rot, sobald eine Rolle nur in einer steht. Genau das ist
|
||||
beim Bauen passiert und hat den Eintrag hier gefunden. */
|
||||
"linke",
|
||||
/* DIE COMMUNITY (11.09.2026). Zuschauer mit einem Zugang, die den
|
||||
Treff sehen -- und sonst nichts. Sie steht hier NICHT in `ALLE`
|
||||
(siehe unten): Wer neu dazukommt, bekommt genau die zwei Seiten,
|
||||
@@ -455,6 +460,63 @@ export const SEITEN = {
|
||||
"/workspace/rechte.html": ["admin", "hand"],
|
||||
};
|
||||
|
||||
/* =====================================================================
|
||||
DIE LINKE HAND BEKOMMT DIE SEITEN DER RECHTEN -- ABGELEITET
|
||||
===================================================================== (21.09.2026)
|
||||
|
||||
Filipe: *"Die linke Hand erhaelt grundsaetzlich dieselben Rechte wie
|
||||
die rechte Hand in allen Bereichen, die die Modis, Aufgaben,
|
||||
Aufgabenzuweisungen, Uebersichten, Kommunikation und Auswertungen
|
||||
betreffen."*
|
||||
|
||||
WARUM ABGELEITET UND NICHT SIEBZEHNMAL "linke" HINGESCHRIEBEN: Die
|
||||
naechste Seite, die jemand der rechten Hand gibt, bekaeme die linke
|
||||
sonst nicht -- und das faellt niemandem auf, weil eine fehlende
|
||||
Seite aussieht wie eine Seite, die es nicht gibt. Diese Schleife
|
||||
kann das nicht vergessen.
|
||||
|
||||
DIE AUSNAHMEN STEHEN EINZELN DA, MIT GRUND. Eine Ausnahme ohne
|
||||
Begruendung ist beim naechsten Umbau eine, die jemand fuer ein
|
||||
Versehen haelt und wegnimmt. */
|
||||
const LINKE_NICHT = {
|
||||
/* Personen anlegen -- ausdruecklich im Auftrag ausgeschlossen. Die
|
||||
LISTE der Leute braucht sie trotzdem, um Aufgaben zu verteilen;
|
||||
die kommt aus /api/personen/liste und ist dort eigens geoeffnet. */
|
||||
"/workspace/personen.html": "legt Personen an",
|
||||
/* Der Weg, auf dem neue Leute ueberhaupt hereinkommen. */
|
||||
"/workspace/bewerbungen.html": "fuehrt zu neuen Personen",
|
||||
"/workspace/talente.html": "fuehrt zu neuen Personen",
|
||||
/* Der vertrauliche Meldeweg. Das Empfindlichste im Haus -- Meldungen
|
||||
ueber Menschen. Im Zweifel das kleinere Recht: Ein Wort von Filipe
|
||||
oeffnet es, eine versehentlich gelesene Meldung laesst sich nicht
|
||||
zurueckholen. Ein Modi darf ihn uebrigens auch nicht. */
|
||||
"/workspace/hilfe.html": "vertraulicher Meldeweg",
|
||||
/* Wer die Rechtetafel bedient, verwaltet Konten -- nicht Aufgaben. */
|
||||
"/workspace/rechte.html": "Rechteverwaltung",
|
||||
};
|
||||
|
||||
for (const [seite, rollen] of Object.entries(SEITEN)) {
|
||||
if (!Array.isArray(rollen) || !rollen.includes("hand")) continue;
|
||||
if (LINKE_NICHT[seite]) continue;
|
||||
if (rollen.includes("linke")) continue;
|
||||
/* EINE KOPIE, KEINE AENDERUNG AM ORIGINAL. Mehrere Seiten teilen
|
||||
sich dieselbe Liste (`ALLE`). Wer die an Ort und Stelle aendert,
|
||||
gibt die Rolle allen Seiten, die dieselbe Liste benutzen -- auch
|
||||
denen, die gerade eine Ausnahme sind. Das faellt nicht auf,
|
||||
solange keine Ausnahme `ALLE` benutzt, und knallt an dem Tag, an
|
||||
dem eine es tut.
|
||||
Direkt hinter die rechte Hand -- die Reihenfolge in diesen Listen
|
||||
ist an einigen Stellen die Anzeigereihenfolge. */
|
||||
const kopie = rollen.slice();
|
||||
kopie.splice(kopie.indexOf("hand") + 1, 0, "linke");
|
||||
SEITEN[seite] = kopie;
|
||||
}
|
||||
|
||||
/** Welche Seiten der rechten Hand die linke NICHT bekommt -- und warum.
|
||||
* Exportiert, damit die Pruefung die Begruendung mitlesen kann statt
|
||||
* eine eigene Liste zu fuehren. */
|
||||
export const LINKE_AUSNAHMEN = LINKE_NICHT;
|
||||
|
||||
/* Die Zugangswaende. Sie haben keine Rolle, weil sich dort noch
|
||||
niemand angemeldet hat -- sie sind der Ort, an dem das passiert.
|
||||
Sie stehen hier nur, damit die Pruefung "jede Datei hat einen
|
||||
|
||||
Reference in New Issue
Block a user