MedQA / services /auth.py
mgbam's picture
Update services/auth.py
41b05bb verified
raw
history blame
1.25 kB
# services/auth.py
import streamlit as st
from streamlit_authenticator import Authenticate
from config.settings import settings
from repositories.user_repo import UserRepo
from models.db import init_db
# 1) Ensure DB tables exist
init_db()
# 2) User repo
user_repo = UserRepo(settings.database_url)
def init_auth():
users = user_repo.get_all_users()
user_map = {
u.username: {"name": u.full_name, "password": u.hashed_password}
for u in users
}
creds = {"usernames": user_map}
return Authenticate(
credentials=creds,
cookie_name="quantum_healthcare_auth",
key=settings.secret_key,
cookie_expiry_days=1,
)
# 3) Instantiate authenticator
authenticator = init_auth()
def require_login():
# πŸ”§ Initialize logout flag so login() can read it
if 'logout' not in st.session_state:
st.session_state['logout'] = False
login_result = authenticator.login(location="sidebar")
if login_result is None:
st.stop()
name, authentication_status, username = login_result
if not authentication_status:
st.stop()
# πŸ›‘ Render the logout button once logged in
authenticator.logout("Logout", location="sidebar")
return username