From 98ed925cdebf9c977f481240ff193f42742a1765 Mon Sep 17 00:00:00 2001 From: Alexander Malzkuhn Date: Fri, 18 Apr 2025 23:15:22 +0200 Subject: [PATCH] Grundlegende Login Funktion Grundlegende Loginfunktionen Admin Maske begonnen --- settings.json | 4 +++ web_ui.py | 75 ++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 settings.json diff --git a/settings.json b/settings.json new file mode 100644 index 0000000..3b990e4 --- /dev/null +++ b/settings.json @@ -0,0 +1,4 @@ +{ + "admin_user": "admin", + "admin_password": "123456" +} \ No newline at end of file diff --git a/web_ui.py b/web_ui.py index 59d5ce6..32ff281 100644 --- a/web_ui.py +++ b/web_ui.py @@ -1,11 +1,78 @@ -from gi.overrides.keysyms import value -from nicegui import ui, events +from nicegui import ui, app from users import * from definitions import * +import hashlib + +def cookie_hash(user, password): + return hashlib.sha256(b"{user}{app.storage.user['id']}{password}").hexdigest() + +def adminsettings(): + # Settingsdatei einlesen + try: + with open(f"{scriptpath}/{usersettingsfilename}") as json_file: + data = json.load(json_file) + json_file.close() + return(data) + except: + return(-1) @ui.page('/login') def page_login(): - ui.label('Loginseite') + + # Settingsdatei einlesen + data = adminsettings() + + def login(): + nonlocal data + + if username.value == data["admin_user"]: + if password.value == data["admin_password"]: + active_login = cookie_hash(data["admin_user"], data["admin_password"]) + app.storage.user['secret'] = active_login + ui.navigate.to("/admin") + else: + ui.notify("Login fehlgeschlagen") + + ui.markdown(f"## {app_title} {app_version}") + ui.markdown("Bitte einloggen") + with ui.grid(columns=2): + ui.markdown("Benutzer:") + username = ui.input('Benutzername') + ui.markdown("Passwort:") + password = ui.input('Passwort', password=True) + ui.button(text="Login", on_click=lambda: login()) + +@ui.page('/admin') +def page_admin(): + data = adminsettings() + active_login = cookie_hash(data["admin_user"], data["admin_password"]) + try: + browser_cookie = app.storage.user['secret'] + except: + browser_cookie = "" + + # Adminseite + if browser_cookie == active_login: + ui.markdown(f"##{app_title} {app_version}") + ui.markdown("###Administrator Benutzer") + with ui.grid(columns=2): + ui.label("Benutzername des Adminstrators") + admin_user = ui.input() + admin_user.value = data["admin_user"] + ui.label("Passwort des Adminsistrators") + admin_password = ui.input(password=True) + admin_password.value = data["admin_password"] + + ui.markdown("###Benutzerverwaltung") + userlist = list_users() + with ui.grid(columns=2): + for name in userlist: + ui.label(name) + ui.button("Löschen") + + # Alternativ zur Loginseite navigieren + else: + ui.navigate.to("/login") @ui.page('/stamping') def page_stamping(): @@ -72,6 +139,6 @@ def page_userlist(): button = ui.button(text=name, on_click=lambda name=name:click_button(name) ) buttons[name] = button -ui.run(port=8090) +ui.run(port=8090, storage_secret="test")