Community: der Chat-Knopf fuehrte auf JEDER Seite ins Leere

ERST DIE METHODE, DANN DER FUND. An einem Tag habe ich in der
Community elf Dinge gefunden, die dort nicht hingehoerten -- jedes
einzelne, weil ich zufaellig hingesehen habe. Das ist keine Methode.
Der Workspace ist fuer die Agentur gebaut worden, und die Community
hat ihn geerbt; solche Reste findet man nicht durch Nachdenken,
sondern indem man ALLE Seiten durchgeht, die ein Mitglied erreichen
kann.

server/pruef-community-sicht.mjs tut genau das. Sie leitet aus
rechte.js ab, welche Seiten offenstehen (4) und welche nicht (27) --
von Hand aufgezaehlt waere das eine Liste, die bei der naechsten Seite
niemand nachzieht --, oeffnet jede davon als Mitglied und fragt
zweierlei: Fuehrt ein sichtbarer Weg auf eine verbotene Seite? Steht
dort die Sprache eines Arbeitsplatzes?

BEIM ERSTEN LAUF: 27 sichtbare Wege, davon ZEHN ins Leere -- und alle
zehn derselbe Knopf. Der Chat steht oben rechts in der Kopfleiste, auf
jeder einzelnen Seite, mit Zaehler. `chat.html` steht einem Mitglied
aber nicht offen: Der Klick landet wieder auf der Startseite. Keine
Meldung, kein Grund, nichts passiert -- an der Stelle, die man am
ehesten drueckt.

Der Knopf haengt jetzt an `darf_chat` aus /api/ich, und das kommt aus
derselben Rechtetabelle wie die Schranke dahinter. Die Oberflaeche
vergleicht keine Rollennamen -- das waere eine zweite Wahrheit, die
bei der naechsten Rechteaenderung auseinanderlaeuft. Dieselbe
Ueberlegung steht zwei Zeilen weiter oben schon einmal.

UND DIE PRUEFUNG HAT GLEICH MEINEN EIGENEN FEHLER GEFUNDEN: Die erste
Fassung stand in `aufbauChat`, wo es die Person gar nicht gibt --
ReferenceError auf allen zehn Seiten. Ohne den Skriptfehler-Abschnitt
waere der Knopf verschwunden UND die Seite kaputt gewesen, und das
haette wie ein Erfolg ausgesehen.

Jetzt haengt es dort, wo die Person ankommt (`werZeigen`) -- ein
vorhandener Knopf laesst sich immer entfernen, auf die Reihenfolge des
Ladens zu bauen waere eine Annahme.

GEGENPROBE: DogFather hat seinen Chat-Knopf weiterhin und 24 Wege auf
andere Seiten. Ohne diesen Abschnitt saehe eine abgeschaffte Funktion
genauso aus wie eine, die richtig entscheidet.

7 Pruefungen, 0 Fehler.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-18 21:59:53 +02:00
co-authored by Claude Opus 5
parent c2a8c5f15f
commit 542070e864
36 changed files with 707 additions and 402 deletions
+14
View File
@@ -4786,6 +4786,20 @@ workspaceRouter.get("/workspace/api/ich", (req, res) => {
`ich.rolle === 'admin'`, und dieselbe Zeile schaltete auch das
Loeschen frei; die beiden gehoeren nicht zusammen. */
darf_rollen_wechseln: darfRollenWechseln(person),
/* OB DER CHAT-KNOPF IN DER KOPFLEISTE ERSCHEINT (18.09.2026).
Er wurde auf JEDER Seite gebaut. Fuer ein Mitglied der Community
fuehrte er ins Leere: `chat.html` steht ihm nicht offen, der
Klick landete wieder auf der Startseite. Gemessen von
pruef-community-sicht: zehn Seiten, zehn tote Wege -- und der
Knopf steht oben rechts, wo man ihn am ehesten drueckt.
DIE ANTWORT KOMMT AUS DERSELBEN TABELLE wie die Schranke selbst.
Die Oberflaeche vergleicht keine Rollennamen -- das waere eine
zweite Wahrheit, und bei der naechsten Rechteaenderung liefe sie
auseinander. Genau die Ueberlegung steht schon zwei Zeilen
darueber; hier gilt sie noch einmal. */
darf_chat: darfSeite(person, "/workspace/chat.html"),
/* DIE KACHELN, WENN SIE NICHT IM BROWSER STEHEN DUERFEN.
Fuer die fuenf bekannten Rollen steht hier `null`, und die