Add change password

This commit is contained in:
handi
2025-11-30 16:34:34 +01:00
parent 111d0d2756
commit 5277830c50
6 changed files with 143 additions and 3 deletions

View File

@@ -2,7 +2,7 @@ import streamlit as st
import yaml
from yaml.loader import SafeLoader
import streamlit_authenticator as stauth
from auth_core import load_credentials_from_db, get_role_for_user, create_user
from auth import load_credentials_from_db, get_role_for_user, create_user, needs_password_change, update_password
from version import __version__
@@ -83,6 +83,36 @@ def main():
return
# ---- Ab hier eingeloggt (persistenter Cookie) ----
if needs_password_change(username):
st.warning("Du musst dein Passwort ändern, bevor du die Anwendung nutzen kannst.")
# Damit das Formular nur einmal pro Run erscheint
with st.form("pw_change_form"):
pw1 = st.text_input("Neues Passwort", type="password")
pw2 = st.text_input("Neues Passwort (Wiederholung)", type="password")
submitted = st.form_submit_button("Passwort ändern")
if submitted:
if not pw1 or not pw2:
st.error("Bitte beide Passwortfelder ausfüllen.")
return
if pw1 != pw2:
st.error("Passwörter stimmen nicht überein.")
return
if len(pw1) < 8:
st.error("Passwort sollte mindestens 8 Zeichen lang sein.")
return
update_password(username, pw1, reset_flag=True)
st.success("Passwort wurde geändert.")
# Optional: danach Seite einmal „sauber“ neu laden
st.rerun()
# Solange new_pwd=1 ist, KEINEN weiteren Content anzeigen
return
role = get_role_for_user(username)
authenticator.logout("Logout", "sidebar")