70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
import streamlit as st
|
|
from version import __version__
|
|
from logging_config import setup_logging
|
|
import os
|
|
from auth import init_auth_db, ensure_logged_in, login_view, authed_header, current_user, create_user, clear_session_user
|
|
|
|
APP_ENV = os.environ.get("APP_ENV", "dev")
|
|
logger = setup_logging(APP_ENV)
|
|
|
|
|
|
|
|
def content_for(role: str, username: str):
|
|
st.header("Dashboard")
|
|
st.info(f"Willkommen, {username}!")
|
|
|
|
if role == "admin":
|
|
st.subheader("Admin-Bereich")
|
|
st.write("Nur Admins sehen das hier.")
|
|
with st.expander("Neuen Nutzer anlegen"):
|
|
new_u = st.text_input("Neuer Username", key="new_u")
|
|
new_p = st.text_input("Neues Passwort", type="password", key="new_p")
|
|
new_role = st.selectbox("Rolle", ["user", "admin"], key="new_role")
|
|
if st.button("Anlegen"):
|
|
if new_u and new_p:
|
|
ok = create_user(new_u.strip(), new_p, new_role)
|
|
st.success("Nutzer angelegt.") if ok else st.error(
|
|
"Username bereits vorhanden."
|
|
)
|
|
else:
|
|
st.warning("Bitte Username und Passwort eingeben.")
|
|
|
|
st.subheader("Dein Bereich")
|
|
st.write(f"Personalisierter Content für **{username}**.")
|
|
# hier: weitere Seite(n), DB-Zugriffe etc.
|
|
|
|
def main():
|
|
if "app_started_logged" not in st.session_state:
|
|
logger.info(f"Starting app in {APP_ENV} mode - APP-Version {__version__}")
|
|
st.session_state["app_started_logged"] = True
|
|
# logger.info(f"User Starting app in {APP_ENV} mode - APP-Version {__version__}")
|
|
st.set_page_config(
|
|
page_title="Intranet-Portal",
|
|
page_icon="🔒",
|
|
layout="centered",
|
|
)
|
|
# Falls kein Login: Login-View anzeigen und raus
|
|
if not st.session_state.get("auth"):
|
|
login_view()
|
|
return
|
|
|
|
# Ab hier sind wir eingeloggt
|
|
authed_header()
|
|
username, role = current_user()
|
|
content_for(role, username)
|
|
|
|
st.write(st.session_state)
|
|
|
|
if st.sidebar.button("set state"):
|
|
st.session_state["app_started_logged"] = True
|
|
#clear_session_user()
|
|
st.write(st.session_state)
|
|
#st.rerun()
|
|
if st.sidebar.button("delete state"):
|
|
st.session_state.pop("app_started_logged", None)
|
|
#clear_session_user()
|
|
st.write(st.session_state)
|
|
#st.rerun()
|
|
|
|
if __name__ == "__main__":
|
|
main() |