test_ui2 / auth.py
Fagan Valiyev
initial
d7efa84
"""Authentication logic for the Audio Labeling Tool."""
import logging
import streamlit as st
from config import load_config
logger = logging.getLogger(__name__)
def authenticate(username: str, password: str) -> str | None:
"""Validate credentials against config.
Returns:
"admin" if admin credentials, "labeler" if labeler credentials, None if invalid.
"""
config = load_config()
# Check admin
admin_cfg = config["admin"]
if username == admin_cfg["username"] and password == admin_cfg["password"]:
return "admin"
# Check labelers
labeler = config["labelers"].get(username)
if labeler is not None and labeler["password"] == password:
return "labeler"
return None
def login(username: str, role: str) -> None:
"""Set session state on successful login."""
st.session_state["authenticated"] = True
st.session_state["username"] = username
st.session_state["role"] = role
logger.info(f"User '{username}' logged in as '{role}'.")
def logout() -> None:
"""Clear all session state and return to login."""
username = st.session_state.get("username", "unknown")
for key in list(st.session_state.keys()):
del st.session_state[key]
st.session_state["authenticated"] = False
logger.info(f"User '{username}' logged out.")