diff --git a/app.py b/app.py index 9c0b314..88604bc 100644 --- a/app.py +++ b/app.py @@ -23,7 +23,7 @@ from cryptography.fernet import Fernet, InvalidToken from fastapi import FastAPI, Header, HTTPException, Request from pydantic import BaseModel -from fastapi.responses import FileResponse +from fastapi.responses import FileResponse, HTMLResponse LOG_PATH = Path("activation.log") @@ -5822,6 +5822,35 @@ def health(): } +# Startseite des Kiosks im Konto "Personalisierung" (ADR-0041, Rolle +# personalisierung in ansible-content). Bis das Formular mit Aktivierungscode +# steht, nur ein Hinweis. "tuxflotte:abmelden" fängt der Kiosk ab und beendet +# die Sitzung. +PERSONALISIERUNG_SEITE = """ + +Personalisierung +
+

Personalisierung

+

Hier wird bald ein persönliches Konto für dieses Gerät eingerichtet. +Dafür brauchst du einen Aktivierungscode von der Verwaltung deiner +Einrichtung. Die Einrichtung ist noch nicht freigeschaltet.

+Abmelden +
+""" + + +@app.get("/personalisierung", response_class=HTMLResponse) +def personalisierung_seite(): + return HTMLResponse(PERSONALISIERUNG_SEITE, headers={"Cache-Control": "no-store"}) + + @app.post("/api/v1/activate") def activate(payload: ActivationRequest, request: Request): # Enrollment Sessions zuerst versuchen (Auto-Modus-ISOs, siehe diff --git a/migrations/0062_personalisierung_merkmal.sql b/migrations/0062_personalisierung_merkmal.sql new file mode 100644 index 0000000..a3226c3 --- /dev/null +++ b/migrations/0062_personalisierung_merkmal.sql @@ -0,0 +1,23 @@ +BEGIN; + +-- ADR-0041, Ergänzung 14.10.2026: "Personalisierung möglich" als +-- Katalogmerkmal, am Workspace vorgegeben und je OE/Gruppe/Gerät +-- übersteuerbar. Die Rolle personalisierung richtet nur das Konto +-- "Personalisierung" mit Kiosk am Anmeldebildschirm ein; personalisiert wird +-- erst mit einem Aktivierungscode je Gerät. +-- +-- Blueprints nur für LightDM-Backends (Mint, Debian). Für Ubuntu/GDM gibt es +-- noch keinen Weg, das Merkmal soll dort nicht wählbar erscheinen. + +INSERT INTO merkmale (id, key, name, description, kategorie_id, im_auftragskatalog) VALUES + (gen_random_uuid(), 'personalisierung', 'Personalisierung möglich', + 'Am Anmeldebildschirm steht das Konto „Personalisierung“. Damit kann auf einem einzelnen Gerät mit einem Aktivierungscode der Verwaltung ein persönliches Konto eingerichtet werden. Ohne Code passiert nichts.', + (SELECT id FROM kategorien WHERE key = 'konfig-identitaet-netzwerk'), TRUE); + +INSERT INTO blueprints (id, merkmal_id, backend_id, ansible_role) +SELECT gen_random_uuid(), m.id, b.id, m.key +FROM merkmale m +JOIN backends b ON b.key IN ('mint-image', 'debian-image') +WHERE m.key = 'personalisierung'; + +COMMIT;