Kanaele machen nur zwei auf
Filipe: "kanaele sollen auch nur die rechte hand und dogfather
aufmachen koennen."
Bis heute galt `fuehrtTeamDogi` -- und das schliesst die LINKE Hand
ein (WIE_RECHTE_HAND = {hand, linke}). Genau die zwei Worte im Auftrag
schliessen sie aus.
`fuehrtTeamDogi` SELBST WIRD NICHT ANGEFASST. Es haengt an elf
weiteren Stellen: Bereiche, Bretter, Sichtbarkeiten, wer einen Kanal
ueberhaupt sieht. Wer die Funktion aendert, aendert zehn Dinge, die
niemand verlangt hat. Stattdessen eine eigene Regel fuer genau diese
eine Frage -- dieselbe Bauweise wie `darfJedeNachrichtLoeschen` ein
paar hundert Zeilen weiter unten, die aus demselben Grund entstanden
ist ("zwei Rollen, woertlich die zwei aus dem Auftrag").
Nicht `istLeitung` uebrigens: Das schlösse Spicy Media ein, und
genannt wurden zwei Rollen, nicht drei.
AN EINER STELLE, NICHT AN ZWEIEN. Der Server lehnt ab, und die
Oberflaeche bietet es gar nicht erst an -- beide fragen dieselbe
Funktion. Ein Knopf, den man sieht und der dann mit 404 antwortet,
ist schlimmer als keiner.
WAS ES NICHT BETRIFFT: Wer in einem BESTEHENDEN Kanal die Leute
aendert. "Aufmachen" beantwortet diese Frage nicht, also bleibt es
dort beim Alten. Falls das auch enger werden soll, sagt Filipe es.
Gemessen, alle vier Rollen durchgespielt:
DogFather darf -> 201, Seite bietet es an
rechte Hand darf -> 201, Seite bietet es an
linke Hand darf NICHT -> 404, Seite bietet es nicht an
ein Modi darf NICHT -> 404, Seite bietet es nicht an
Dazu die Gegenprobe, dass die Absage nichts verraet: Eine erfundene
und eine echte Kategorie sehen fuer die linke Hand gleich aus (404 /
404). Sonst waere aus der Fehlermeldung abzulesen, welche Kanaele es
gibt. 9 Messungen, 0 Befunde. pruef-chat-kanaele: 81 geprueft,
0 Fehler.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -1156,7 +1156,10 @@ chatRouter.get("/workspace/api/chat/raeume", (req, res) => {
|
||||
Oberflaeche zeigt den Knopf ohnehin nur, wenn hier etwas
|
||||
ankommt. Wer nichts anlegen darf, bekommt ein leeres Feld -- und
|
||||
ein leeres Feld sagt nichts. */
|
||||
const darfKanal = fuehrtTeamDogi(req.person);
|
||||
/* DIESELBE FRAGE, DIESELBE ANTWORT. Die Oberflaeche zeigt den
|
||||
Knopf nur, wenn der Server ihn auch annimmt -- ein Knopf, der
|
||||
mit 404 antwortet, ist schlimmer als keiner. */
|
||||
const darfKanal = darfKanalAufmachen(req.person);
|
||||
const belegt = darfKanal
|
||||
? new Set(db().prepare("SELECT kategorie FROM chat_raeume WHERE art = 'kanal'")
|
||||
.all().map((z) => z.kategorie))
|
||||
@@ -1262,11 +1265,31 @@ chatRouter.post("/workspace/api/chat/gruppe", gleicheHerkunft, express.json({ li
|
||||
morgens anlegt und mittags fuellt, ist ein normaler Vorgang; ihn
|
||||
dafuer zweimal aufmachen zu muessen waere eine Regel ohne Zweck.
|
||||
===================================================================== */
|
||||
/** Wer einen Kanal AUFMACHEN darf (23.09.2026).
|
||||
*
|
||||
* Filipe: "kanaele sollen auch nur die rechte hand und dogfather
|
||||
* aufmachen koennen."
|
||||
*
|
||||
* NICHT `fuehrtTeamDogi`: Das schliesst die linke Hand ein
|
||||
* (WIE_RECHTE_HAND = {hand, linke}), und genau die zwei Worte im
|
||||
* Auftrag schliessen sie aus. NICHT `istLeitung`: Das schliesst
|
||||
* Spicy Media ein, und genannt wurden zwei Rollen, nicht drei.
|
||||
*
|
||||
* Dieselbe Bauweise wie `darfJedeNachrichtLoeschen` weiter unten:
|
||||
* woertlich die zwei aus dem Auftrag, an EINER Stelle. Wer sie
|
||||
* spaeter aendert, aendert sie ueberall.
|
||||
*
|
||||
* WAS ES NICHT BETRIFFT: Wer in einem bestehenden Kanal die Leute
|
||||
* aendert -- das ist eine andere Frage, und "aufmachen" beantwortet
|
||||
* sie nicht. Dort gilt weiter `fuehrtTeamDogi`. */
|
||||
const darfKanalAufmachen = (person) =>
|
||||
istDogFather(person) || person?.rolle === "hand";
|
||||
|
||||
chatRouter.post("/workspace/api/chat/kanal", gleicheHerkunft, express.json({ limit: "8kb" }), (req, res) => {
|
||||
try {
|
||||
/* 404 und nicht 403: Wer keine Kanaele fuehren darf, soll auch
|
||||
/* 404 und nicht 403: Wer keine Kanaele aufmachen darf, soll auch
|
||||
nicht erfahren, dass es die Moeglichkeit gibt. */
|
||||
if (!fuehrtTeamDogi(req.person)) return res.status(404).json({ fehler: "nicht_gefunden" });
|
||||
if (!darfKanalAufmachen(req.person)) return res.status(404).json({ fehler: "nicht_gefunden" });
|
||||
|
||||
const kategorie = String(req.body?.kategorie ?? "").trim();
|
||||
if (!MODI_KATEGORIEN.some((k) => k.wert === kategorie)) {
|
||||
|
||||
Reference in New Issue
Block a user