Wizard: User erst beim Abschliessen, Reihenfolge Sprache/Design/Modus, Reset im Einzelmodus
Image bauen und in die Registry schieben / build (push) Successful in 6s
Image bauen und in die Registry schieben / build (push) Successful in 6s
- Benutzer wird erst beim 'Einrichtung abschliessen' angelegt (POST /api/register im wizardFinish); bis dahin frei umentscheidbar, im Modus- Schritt Hinweis + Live-Validierung (Finish deaktiviert bis ausgefuellt) - Reihenfolge: Sprache -> Darstellung (Theme/OLED/Akzent) -> Modus (Einzel/Mehrbenutzer); Onboarding bleibt Sprache -> Darstellung - Sprach-Schritt: Repo-Link + Kurztext zum Starten (nutzt den Raum) - Wizard-Modal: min-height statt fixer Hoehe -> Modus-Schritt mit Formular wird nicht mehr abgeschnitten - Server-Reset auch im Einzelmodus moeglich (nur Bestaetigungstext, kein Passwort noetig); Reset-Sektion erscheint dann entsprechend - Tests: 167 Checks gruen (39+18+52+32+26)
This commit is contained in:
1 parent
655316278a
commit
135425c781
6 files changed
+141
-108
No files matched your search
@@ -1466,21 +1466,24 @@ class Handler(BaseHTTPRequestHandler):
|
||||
uid = self._require_user()
|
||||
if uid is None:
|
||||
return
|
||||
if uid != 1:
|
||||
self._send(403, json.dumps({"error": "nur der erste Benutzer"}),
|
||||
"application/json; charset=utf-8")
|
||||
return
|
||||
data = self._read_json()
|
||||
con = db()
|
||||
row = con.execute("SELECT * FROM users WHERE id=?",
|
||||
(uid,)).fetchone()
|
||||
con.close()
|
||||
if not row or not _verify_pw(data.get("password", ""),
|
||||
row["salt"], row["password_hash"]):
|
||||
self._send(400, json.dumps(
|
||||
{"error": "Aktuelles Passwort ist falsch"}),
|
||||
"application/json; charset=utf-8")
|
||||
return
|
||||
if uid != OPEN_USER:
|
||||
# Mehrbenutzermodus: nur der Owner, mit Passwort
|
||||
if uid != 1:
|
||||
self._send(403, json.dumps({"error": "nur der erste Benutzer"}),
|
||||
"application/json; charset=utf-8")
|
||||
return
|
||||
con = db()
|
||||
row = con.execute("SELECT * FROM users WHERE id=?",
|
||||
(uid,)).fetchone()
|
||||
con.close()
|
||||
if not row or not _verify_pw(data.get("password", ""),
|
||||
row["salt"], row["password_hash"]):
|
||||
self._send(400, json.dumps(
|
||||
{"error": "Aktuelles Passwort ist falsch"}),
|
||||
"application/json; charset=utf-8")
|
||||
return
|
||||
# Einzelmodus (offen): kein Passwort noetig, nur Bestaetigungstext
|
||||
if _clean_str(data.get("confirm")) != "RESET":
|
||||
self._send(400, json.dumps(
|
||||
{"error": "Bestätigungstext ist falsch"}),
|
||||
|
||||
Reference in new issue
Block a user