Der Weg ueber die TikTok-Datei des Creators ist entfernt
Filipe, mit den drei Knoepfen im Bild: "ich will nur dass wir manager
scouts, dogfather oder spicy sachen eintragen koennen und nicht die
creator. ich will keine daten von denen kriegen, nur wir."
Gebaut am Vormittag, am Nachmittag wieder ausgebaut. Der Weg war
technisch in Ordnung -- und er war der einzige, bei dem ein CREATOR uns
etwas gibt: seine eigene Datenkopie aus der TikTok-App. Genau das soll
nicht sein. Es bleiben die beiden Wir-Wege: die eigene Datei und die
Backstage-Tabelle der Agentur.
VOLLSTAENDIG ENTFERNT, NICHT VERSTECKT:
- beide Schnittstellen (/tiktok-datei und /tiktok-datei/vorschau)
- der Leser workspace-tiktok-datei.js (263 Zeilen)
- Knopf, Fenster, Dateiauswahl, Vorschau, Stilregeln
- der fertige Text, der einen Creator um seine Daten bittet
- der Erklaersatz unter der Knopfreihe
Ein Weg, der nur unsichtbar ist, ist weiterhin ein Weg -- wer die
Adresse kennt, benutzt ihn. Und eine Bitte an einen Creator um seine
Daten soll in diesem Haus nirgends mehr stehen, auch nicht in einem
Fenster, das niemand oeffnet.
GEPRUEFT WIRD JETZT DIE ABWESENHEIT, an drei Stellen: Knopf weg,
Fenster weg, und die Schnittstelle antwortet DOGFATHER mit 404 -- dem
staerksten Zugang, den es gibt. Bekommt er 404, bekommt ihn jeder.
Daneben die Gegenprobe, dass der Backstage-Weg weiterhin mit 200
antwortet; sonst bewiese das 404 nur einen Tippfehler.
pruef-tiktok-datei.mjs (47 Pruefungen) faellt mit dem Weg weg. Die
Zahl sinkt dadurch, und das ist hier richtig: Sie pruefte etwas, das
es nicht mehr gibt. Was bleibt, sind sechs Pruefungen, die das
Fehlen sichern -- pruef-backstage-import 63 -> 66.
NEBENBEI GEDREHT, NICHT GELOESCHT: pruef-leistung-optik behauptete
noch die Regel vom 07.09. ("beim Manager fehlt die Kachel", "die Seite
weist den Creator ab"). Beide Aussagen sind jetzt umgekehrt und messen
zusaetzlich, was vorher niemand gemessen hat: dass die Creatorin auf
der Zahlen-Seite ihre EIGENEN Zahlen sieht und trotzdem keinen
einzigen Knopf zum Eintragen hat -- beides zusammen, denn "keine
Knoepfe" waere auch auf einer leeren Seite wahr. 56 -> 59.
Nicht von mir, nachgemessen gegen den Stand ohne diese Aenderungen:
pruef-struktur meldet dieselben 6 Fehler (crew-index/teamlage nicht
verlinkt, start.css 348 KB, totes CSS .nase, UTC-Datum).
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -167,19 +167,31 @@ const chef = await alsRolle("admin", "CODE-DOGI-0001", "start.html");
|
||||
k.some((x) => x.querySelector(".kachel__name")?.textContent.trim() === "Zahlenzauber"));
|
||||
ok(!erfunden, "eine erfundene Kachel wird nicht gefunden");
|
||||
|
||||
/* GEGENPROBE ZUR REGEL SELBST: Der Manager darf sie NICHT sehen und
|
||||
NICHT hineinkommen. Ohne diese beiden Zeilen bewiese der Block
|
||||
oben nur, dass DogFather etwas sieht -- nicht, dass sonst niemand
|
||||
es sieht. Und genau das war die Anweisung. */
|
||||
/* GEDREHT AM 11.09.2026, NICHT GELOESCHT.
|
||||
|
||||
Hier stand das Gegenteil: "beim Manager fehlt sie" und "die Seite
|
||||
laesst ihn nicht herein". Das war richtig nach dem Wunsch vom
|
||||
07.09. ("nimm die kategorie zahlen bei jedem weg"). Filipe hat ihn
|
||||
am 11.09. aufgehoben: "jetzt soll jede rolle diese kachel sehen.
|
||||
spicy, dogfather, manager, scout und creator."
|
||||
|
||||
Eine geloeschte Pruefung senkt die Zahl und beweist nichts. Eine
|
||||
gedrehte haelt fest, dass die Oeffnung eine ENTSCHEIDUNG war --
|
||||
und schlaegt an, wenn jemand die Sperre versehentlich wieder
|
||||
einbaut.
|
||||
|
||||
BEIDE SCHICHTEN, wie vorher: die Kachel (der Weg) UND die Seite
|
||||
(die Schranke). Nur eine von beiden zu messen, hat am 10.09. schon
|
||||
einmal eine dritte, unbemerkte Schicht stehen lassen. */
|
||||
const mgr = await alsRolle("manager", "CODE-MANA-0001", "start.html");
|
||||
const beiIhm = await mgr.seite.$$eval(".kachel", (k) =>
|
||||
k.map((x) => x.querySelector(".kachel__name")?.textContent.trim()));
|
||||
ok(beiIhm.length > 3 && !beiIhm.includes("Zahlen"),
|
||||
`beim Manager fehlt sie (${beiIhm.length} Kacheln, keine davon "Zahlen")`);
|
||||
ok(beiIhm.length > 3 && beiIhm.includes("Zahlen"),
|
||||
`der Manager sieht die Kachel wieder (${beiIhm.length} Kacheln)`);
|
||||
|
||||
const versuch = await mgr.seite.evaluate(async (b) =>
|
||||
(await fetch(b + "/workspace/leistung.html", { redirect: "manual" })).status, BASIS);
|
||||
ok(versuch !== 200, `und die Seite selbst laesst ihn nicht herein (HTTP ${versuch})`);
|
||||
ok(versuch === 200, `und die Seite laesst ihn herein (HTTP ${versuch})`);
|
||||
await mgr.ctx.close();
|
||||
|
||||
await chef.seite.goto(`${BASIS}/workspace/leistung.html`, { waitUntil: "networkidle" });
|
||||
@@ -421,21 +433,47 @@ melde("\n=== Aus Datei einlesen ===");
|
||||
melde("\n=== Was der Creator sieht ===");
|
||||
const luna = await alsRolle("creator", "CODE-CREA-0001", "start.html");
|
||||
{
|
||||
/* HIER STAND DAS GEGENTEIL, UND ES WAR RICHTIG -- bis Filipe die
|
||||
Regel geändert hat: "nimm die kategorie zahlen bei jedem weg, nur
|
||||
die rolle dogfather soll die sehen." Vorher sah Luna ihre eigenen
|
||||
Zahlen (nur ohne Eintragen-Knopf), jetzt kommt sie gar nicht mehr
|
||||
hinein. Die Prüfung misst deshalb nicht mehr, WAS sie dort sieht,
|
||||
sondern DASS sie nicht hineinkommt -- und dass die Schranke am
|
||||
Server sitzt, nicht bloß in der Oberfläche. */
|
||||
const keineKachel = await luna.seite.$$eval(".kachel", (k) =>
|
||||
/* ZWEIMAL GEDREHT, UND BEIDE MALE AUF ANSAGE.
|
||||
|
||||
Ursprünglich sah Luna ihre eigenen Zahlen (ohne Eintragen-Knopf).
|
||||
Am 07.09. kam sie gar nicht mehr hinein ("nimm die kategorie
|
||||
zahlen bei jedem weg"). Seit dem 11.09. gilt wieder die erste
|
||||
Fassung, und zwar wörtlich: "die creator kriegen dan quasi nur
|
||||
ihre daten zu sehen und der manager scout dogfather oder spicy
|
||||
können eintragen."
|
||||
|
||||
Gemessen wird deshalb BEIDES -- dass sie hineinkommt UND dass sie
|
||||
dort nichts eintragen kann. Nur das erste zu prüfen hieße, eine
|
||||
offene Tür für eine Erlaubnis zu halten. */
|
||||
const kacheln = await luna.seite.$$eval(".kachel", (k) =>
|
||||
k.map((x) => x.querySelector(".kachel__name")?.textContent.trim()));
|
||||
ok(keineKachel.length > 2 && !keineKachel.includes("Zahlen"),
|
||||
`bei Luna fehlt die Kachel "Zahlen" (${keineKachel.length} Kacheln)`);
|
||||
ok(kacheln.length > 2 && kacheln.includes("Zahlen"),
|
||||
`Luna sieht die Kachel "Zahlen" wieder (${kacheln.length} Kacheln)`);
|
||||
|
||||
const rein = await luna.seite.evaluate(async () =>
|
||||
(await fetch("/workspace/leistung.html", { credentials: "same-origin" })).redirected);
|
||||
ok(rein === true, "und die Seite selbst weist sie ab (Umleitung)");
|
||||
ok(rein === false, "und die Seite laesst sie herein (keine Umleitung)");
|
||||
|
||||
/* UND DORT: ihre Zahlen, kein Knopf. Beides zusammen, sonst sagt es
|
||||
nichts -- "keine Knoepfe" waere auch bei einer leeren Seite wahr. */
|
||||
await luna.seite.goto(`${BASIS}/workspace/leistung.html`, { waitUntil: "networkidle" });
|
||||
await luna.seite.waitForTimeout(1600);
|
||||
const lage = await luna.seite.evaluate(() => {
|
||||
const h = (id) => document.getElementById(id)?.hidden !== false;
|
||||
return {
|
||||
knoepfe: ["import-oeffnen", "netz-oeffnen", "ziele-aendern"].filter((i) => !h(i)),
|
||||
tagKnoepfe: document.querySelectorAll(".tagzeile__knopf").length,
|
||||
wahl: document.getElementById("creator-wahl")?.hidden === false,
|
||||
inhalt: (document.getElementById("tagetabelle")?.textContent || "").length,
|
||||
};
|
||||
});
|
||||
ok(lage.knoepfe.length === 0 && lage.tagKnoepfe === 0,
|
||||
`sie kann dort nichts eintragen (${lage.knoepfe.join(", ") || "kein Knopf"}, `
|
||||
+ `${lage.tagKnoepfe} Tag-Knöpfe)`);
|
||||
ok(lage.wahl === false,
|
||||
"und hat kein Auswahlfeld für fremde Creator -- sie sieht nur sich");
|
||||
ok(lage.inhalt > 20,
|
||||
`ihre eigenen Zahlen stehen aber da (${lage.inhalt} Zeichen)`);
|
||||
|
||||
/* DIE SCHRANKE SITZT AM SERVER, nicht in der Oberfläche. Ein
|
||||
versteckter Knopf ist keine Sicherung. */
|
||||
|
||||
Reference in New Issue
Block a user