Grundlegende Login Funktion

Grundlegende Loginfunktionen
Admin Maske begonnen
This commit is contained in:
Alexander Malzkuhn 2025-04-18 23:15:22 +02:00
parent 1a9e4aea14
commit 98ed925cde
2 changed files with 75 additions and 4 deletions

4
settings.json Normal file
View File

@ -0,0 +1,4 @@
{
"admin_user": "admin",
"admin_password": "123456"
}

View File

@ -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")