Add change password
This commit is contained in:
32
app/main.py
32
app/main.py
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user