Initial commit: PoE Manager modern UI rebuild
- Neues, eigenständiges Frontend (Sidebar, zentriertes Logo in der Topbar, Dark/Light-Theme, Karten-Dashboard, Toasts/Modals statt Bootstrap) - Oeffentliches Kurz-Dashboard ohne Login (Status-Uebersicht) - Browser-SSH-Terminal (paramiko, plattformunabhaengig) zum Testen von Switch-Zugangsdaten inkl. interaktiver Host-Key-Bestaetigung - Granulares Rechtesystem mit Gruppen (Devices/Switches-Berechtigungen) - Aufgeraeumtes Backend mit konfigurierbaren Pfaden, auto-generierten Secrets statt hart codierter Werte im Original Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Legt einen normalen (Nicht-Admin) Benutzer im PoE Manager an."""
|
||||
import os
|
||||
import sqlite3
|
||||
from getpass import getpass
|
||||
from flask_bcrypt import Bcrypt
|
||||
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
DB_PATH = os.environ.get("POE_DB_PATH", os.path.join(BASE_DIR, "sqlite.db"))
|
||||
bcrypt = Bcrypt()
|
||||
|
||||
|
||||
def main():
|
||||
username = input("Benutzername: ").strip()
|
||||
password = getpass("Passwort: ")
|
||||
password_confirm = getpass("Passwort bestätigen: ")
|
||||
|
||||
if password != password_confirm:
|
||||
print("Passwörter stimmen nicht überein!")
|
||||
return
|
||||
|
||||
pw_hash = bcrypt.generate_password_hash(password).decode("utf-8")
|
||||
|
||||
conn = sqlite3.connect(DB_PATH)
|
||||
cur = conn.cursor()
|
||||
try:
|
||||
cur.execute(
|
||||
"INSERT INTO users (username, password, is_admin) VALUES (?, ?, ?)",
|
||||
(username, pw_hash, 0),
|
||||
)
|
||||
conn.commit()
|
||||
print(f"Benutzer '{username}' erfolgreich angelegt.")
|
||||
except sqlite3.IntegrityError:
|
||||
print("Benutzername existiert bereits!")
|
||||
finally:
|
||||
conn.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user