Update auf Nicegui 3
Umstellung auf admin als User und Auswahl von Adminbenutzer
This commit is contained in:
parent
3035bb384c
commit
0b478b5e2e
69
lib/admin.py
69
lib/admin.py
@ -762,12 +762,14 @@ def page_admin():
|
||||
ui.label("Administrationsbenutzer:").classes('text-bold')
|
||||
with ui.grid(columns=2).classes('items-baseline'):
|
||||
|
||||
ui.label("Benutzername des Adminstrators:")
|
||||
admin_user = ui.input().tooltip("Geben Sie hier den Benutzernamen für den Adminstationsnutzer ein")
|
||||
admin_user.value = data["admin_user"]
|
||||
ui.label("Passwort des Administrators:")
|
||||
admin_password = ui.input(password=True).tooltip("Geben Sie hier das Passwort für den Administationsnutzer ein. Merken Sie sich dieses Passwort gut. Es kann nicht über das Webinterface zurückgesetzt werden.")
|
||||
|
||||
ui.label("Benutzer mit Administrationsrechten:")
|
||||
user_switch_list = []
|
||||
with ui.element():
|
||||
for i in list_users():
|
||||
user_switch_list.append(ui.switch(i))
|
||||
for i in user_switch_list:
|
||||
if i.text in get_admin_list():
|
||||
i.value = True
|
||||
secret = data["secret"]
|
||||
|
||||
with ui.card():
|
||||
@ -1045,31 +1047,40 @@ def page_admin():
|
||||
holiday_section()
|
||||
|
||||
def save_admin_settings():
|
||||
write_adminsetting("admin_user", admin_user.value)
|
||||
if admin_password.value != "":
|
||||
write_adminsetting("admin_password", hash_password(admin_password.value))
|
||||
else:
|
||||
write_adminsetting("admin_password", data["admin_password"])
|
||||
write_adminsetting("port", port.value)
|
||||
write_adminsetting("secret", secret)
|
||||
write_adminsetting("touchscreen", touchscreen_switch.value)
|
||||
write_adminsetting("times_on_touchscreen", timestamp_switch.value)
|
||||
write_adminsetting("photos_on_touchscreen", photo_switch.value)
|
||||
write_adminsetting("picture_height", picture_height_input.value)
|
||||
write_adminsetting("button_height", button_height_input.value)
|
||||
write_adminsetting("user_notes", notes_switch.value)
|
||||
write_adminsetting("holidays", data["holidays"])
|
||||
write_adminsetting("vacation_application", va_switch.value)
|
||||
|
||||
if int(old_port) != int(port.value):
|
||||
admin_users = { }
|
||||
admin_counter = -1
|
||||
for i in user_switch_list:
|
||||
if i.value == True:
|
||||
admin_counter += 1
|
||||
admin_users[str(admin_counter)] = i.text
|
||||
if len(admin_users) == 0:
|
||||
with ui.dialog() as dialog, ui.card():
|
||||
ui.label(
|
||||
"Damit die Porteinstellungen wirksam werden, muss der Server neu gestartet werden.")
|
||||
ui.button("OK", on_click=lambda: dialog.close())
|
||||
ui.label("Es wurde kein Administrationsbenutzer ausgewählt. Mindestens ein Benutzer muss Administrationsrechte haben.")
|
||||
ui.button("OK", on_click=dialog.close)
|
||||
dialog.open()
|
||||
ui.notify("Einstellungen gespeichert")
|
||||
reset_visibility.value = False
|
||||
timetable.refresh()
|
||||
else:
|
||||
|
||||
write_adminsetting("admin_user", admin_users)
|
||||
write_adminsetting("port", port.value)
|
||||
write_adminsetting("secret", secret)
|
||||
write_adminsetting("touchscreen", touchscreen_switch.value)
|
||||
write_adminsetting("times_on_touchscreen", timestamp_switch.value)
|
||||
write_adminsetting("photos_on_touchscreen", photo_switch.value)
|
||||
write_adminsetting("picture_height", picture_height_input.value)
|
||||
write_adminsetting("button_height", button_height_input.value)
|
||||
write_adminsetting("user_notes", notes_switch.value)
|
||||
write_adminsetting("holidays", data["holidays"])
|
||||
write_adminsetting("vacation_application", va_switch.value)
|
||||
|
||||
if int(old_port) != int(port.value):
|
||||
with ui.dialog() as dialog, ui.card():
|
||||
ui.label(
|
||||
"Damit die Porteinstellungen wirksam werden, muss der Server neu gestartet werden.")
|
||||
ui.button("OK", on_click=lambda: dialog.close())
|
||||
dialog.open()
|
||||
ui.notify("Einstellungen gespeichert")
|
||||
reset_visibility.value = False
|
||||
timetable.refresh()
|
||||
|
||||
with ui.button("Speichern", on_click=save_admin_settings):
|
||||
with ui.tooltip():
|
||||
|
||||
@ -38,7 +38,6 @@ status_out = "ausgestempelt"
|
||||
|
||||
standard_adminsettings = { "admin_user": {
|
||||
0: "admin"},
|
||||
"admin_password": "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918",
|
||||
"port": "8090",
|
||||
"secret": "ftgzuhjikg,mt5jn46uzer8sfi9okrmtzjhndfierko5zltjhdgise",
|
||||
"times_on_touchscreen": True,
|
||||
@ -56,9 +55,9 @@ standard_adminsettings = { "admin_user": {
|
||||
# Standard User Settings:
|
||||
|
||||
standard_usersettings = {
|
||||
"username": "default",
|
||||
"fullname": "Standardbenutzer",
|
||||
"password": "37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f",
|
||||
"username": "admin",
|
||||
"fullname": "Administrator",
|
||||
"password": "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918",
|
||||
"api_key": "1234567890",
|
||||
"workhours": { }
|
||||
}
|
||||
|
||||
@ -19,11 +19,11 @@ def page_login():
|
||||
|
||||
def login():
|
||||
nonlocal data
|
||||
|
||||
print(username.value)
|
||||
if username.value in get_admin_list():
|
||||
#TODO Loginprozess anpassen_
|
||||
if hash_password(password.value) == data["admin_password"]:
|
||||
app.storage.user['authenticated'] = True
|
||||
app.storage.user['admin_authenticated'] = True
|
||||
#TODO Weiterleitungsauswahl ob zum Stempeln oder Administration
|
||||
ui.navigate.to("/admin")
|
||||
else:
|
||||
|
||||
@ -580,6 +580,6 @@ def write_adminsetting(key: str, value):
|
||||
|
||||
def get_admin_list():
|
||||
adnin_settings = load_adminsettings()
|
||||
admin_list = admin_settings["admin_user"]
|
||||
admin_list = load_adminsettings()["admin_user"]
|
||||
return admin_list.values()
|
||||
|
||||
|
||||
@ -38,10 +38,23 @@ class login_mask:
|
||||
def login():
|
||||
nonlocal data
|
||||
|
||||
if username.value == data["admin_user"]:
|
||||
if hash_password(password.value) == data["admin_password"]:
|
||||
app.storage.user['admin_authenticated'] = True
|
||||
ui.navigate.to("/admin")
|
||||
if username.value in get_admin_list():
|
||||
current_user = user(username.value)
|
||||
if hash_password(password.value) == current_user.password:
|
||||
with ui.dialog() as forward_dialog, ui.card():
|
||||
ui.label("Wollen Sie den Administrationsbereich oder den Datenbereich aufrufen?")
|
||||
def admin_area():
|
||||
app.storage.user['admin_authenticated'] = True
|
||||
ui.navigate.to('/admin')
|
||||
def time_area():
|
||||
app.storage.user['active_user'] = current_user.username
|
||||
ui.navigate.to(self.target)
|
||||
with ui.grid(columns=2):
|
||||
ui.button("Administrationsbereich", on_click=admin_area)
|
||||
ui.button("Datenbereich", on_click=time_area)
|
||||
|
||||
forward_dialog.open()
|
||||
#ui.navigate.to("/admin")
|
||||
else:
|
||||
ui.notify("Login fehlgeschlagen")
|
||||
else:
|
||||
|
||||
4
main.py
4
main.py
@ -33,7 +33,7 @@ def main():
|
||||
|
||||
list_users()
|
||||
|
||||
homepage()
|
||||
#homepage()
|
||||
|
||||
def startup_message():
|
||||
|
||||
@ -54,7 +54,7 @@ def main():
|
||||
ui.toggle.default_props('rounded')
|
||||
ui.row.default_classes('items-baseline')
|
||||
|
||||
ui.run(favicon='⏲', port=port, storage_secret=secret, language='de-DE', show_welcome_message=False)
|
||||
ui.run(root=homepage, favicon='⏲', port=port, storage_secret=secret, language='de-DE', show_welcome_message=False)
|
||||
|
||||
if __name__ in ("__main__", "__mp_main__"):
|
||||
parser = argparse.ArgumentParser(description=f'{app_title} {app_version}')
|
||||
|
||||
@ -1,8 +1,7 @@
|
||||
{
|
||||
"admin_user": {
|
||||
0: "admin"
|
||||
"0": "admin"
|
||||
},
|
||||
"admin_password": "8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918",
|
||||
"port": "8090",
|
||||
"secret": "ftgzuhjikg,mt5jn46uzer8sfi9okrmtzjhndfierko5zltjhdgise",
|
||||
"times_on_touchscreen": true,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user