Zustaendigkeit: DogFather und Manager zaehlen wie ein Scout
Filipe: "dogfather soll auch zaehlen wie bananastift und patrick."
Beim Nachsehen war das kein Wunsch, sondern ein Fehlerbericht. In der
Auswahl "Betreut von" stand "DogFather" -- aber als LEER-Wert, nicht als
Person. Es sah aus wie eine Zuordnung und war keine. Genau dieselben
Creator zaehlten deshalb gleichzeitig im Hinweis "Creator ohne
zustaendige Person". Zwei Aussagen ueber denselben Sachverhalt, beide auf
demselben Bildschirm, beide fuer sich stimmig.
Jetzt kann jede betreuende Rolle eingetragen werden -- DogFather, Manager
und Scouts, in der ueblichen Reihenfolge. Der Leer-Wert heisst, was er
ist: "— niemand —". Bei DogFather und Manager steht die Rolle in
Klammern dabei; bei aehnlichen Namen ist sonst nicht zu erkennen, wen man
eintraegt. Und "betreut N Creator" steht jetzt an jeder betreuenden
Person, nicht nur an Scouts.
DER WICHTIGE TEIL: An den RECHTEN aendert das nichts.
Die Zustaendigkeit steuert die Sichtbarkeit NUR beim Scout -- die Leitung
sieht ohnehin jeden Creator. Waere das anders, haette eine
Anzeigeeinstellung still Rechte vergeben. Der Test weist beide Richtungen
nach:
* Tili auf DogFather eingetragen -> KEIN Scout sieht sie.
* Tili auf Patrick eingetragen -> nur Patrick sieht sie, BananaStift
weiterhin nicht.
* Zurueck auf DogFather -> Patrick verliert die Sicht wieder.
* DogFather sieht in allen drei Faellen unveraendert beide Creator.
Ein Creator kann nicht zustaendig sein -- das waere eine Rolle, die es
nicht gibt. Und ein Scout kann die Zustaendigkeit weiterhin nicht selbst
setzen (404), sonst haette er die Rechtevergabe in der Hand, die ihn
begrenzen soll.
20 Pruefungen, darunter die Gegenprobe zum Hinweis: Auf "niemand"
zurueckgesetzt MUSS er wiederkommen, sonst waere er wertlos.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -102,9 +102,20 @@ personenRouter.get("/workspace/api/verwaltung/personen", (req, res) => {
|
||||
FROM personen p
|
||||
LEFT JOIN betreuung b ON b.creator_id = p.id
|
||||
ORDER BY ${ROLLEN_SORTIERUNG.replace("rolle", "p.rolle")}, p.aktiv DESC, p.name`).all(),
|
||||
/* Wer ueberhaupt als zustaendig eingetragen werden kann. */
|
||||
/* Wer ueberhaupt als zustaendig eingetragen werden kann.
|
||||
|
||||
Bis zum 31.08.2026 waren das nur Scouts. In der Auswahl stand
|
||||
"DogFather" -- aber als LEER-Wert, nicht als Person. Das sah aus
|
||||
wie eine Zuordnung und war keine: Dieselben Creator zaehlten
|
||||
gleichzeitig im Hinweis "Creator ohne zustaendige Person". Zwei
|
||||
Stellen, zwei Aussagen, beide auf demselben Bildschirm.
|
||||
|
||||
Jetzt kann jede betreuende Rolle eingetragen werden -- DogFather
|
||||
und Manager genauso wie Scouts. In der ueblichen Reihenfolge. */
|
||||
betreuer: db().prepare(
|
||||
"SELECT id, name FROM personen WHERE rolle = 'scout' AND aktiv = 1 ORDER BY name").all(),
|
||||
`SELECT id, name, rolle FROM personen
|
||||
WHERE rolle IN ('admin', 'manager', 'scout') AND aktiv = 1
|
||||
ORDER BY ${ROLLEN_SORTIERUNG}, name`).all(),
|
||||
});
|
||||
} catch (fehler) {
|
||||
console.error("[workspace] Personen lesen:", fehler?.message);
|
||||
@@ -137,10 +148,18 @@ personenRouter.put("/workspace/api/verwaltung/betreuung/:id", gleicheHerkunft, (
|
||||
if (!Number.isInteger(z) || z < 1) return res.status(400).json({ fehler: "Ungültige Auswahl." });
|
||||
const betreuer = db().prepare(
|
||||
"SELECT id, name, rolle FROM personen WHERE id = ? AND aktiv = 1").get(z);
|
||||
/* Nur Scouts. Das Management sieht ohnehin alle Creator und braucht
|
||||
keinen Eintrag -- einer waere irrefuehrend. */
|
||||
if (!betreuer || betreuer.rolle !== "scout") {
|
||||
return res.status(400).json({ fehler: "Zuständig können nur aktive Scouts sein." });
|
||||
/* DogFather, Manager und Scouts. Ein Creator kann nicht fuer einen
|
||||
anderen zustaendig sein -- das waere eine Rolle, die es nicht gibt.
|
||||
|
||||
WICHTIG: Ein Eintrag auf DogFather oder Manager aendert an den
|
||||
RECHTEN nichts. Die Leitung sieht ohnehin jeden Creator; der
|
||||
Eintrag sagt nur, WER sich kuemmert. Nur beim Scout entscheidet er
|
||||
zusaetzlich ueber die Sichtbarkeit -- deshalb steht die Regel
|
||||
dafuer unveraendert in betreuteIds(). */
|
||||
if (!betreuer || !["admin", "manager", "scout"].includes(betreuer.rolle)) {
|
||||
return res.status(400).json({
|
||||
fehler: "Zuständig können nur aktive DogFather, Manager oder Scouts sein.",
|
||||
});
|
||||
}
|
||||
|
||||
betreuungSetzen(id, z, { ...req.person, ip: echteIp(req) });
|
||||
|
||||
Reference in New Issue
Block a user