Spaces:
Sleeping
Sleeping
File size: 1,642 Bytes
b1abade fa3f84c b1abade |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# modules/auth.py - Authentication functions
import streamlit as st
import hashlib
from .database import Session, User
def init_session_state():
"""Initialize session state variables"""
if 'logged_in' not in st.session_state:
st.session_state.logged_in = False
st.session_state.user_role = None
st.session_state.user_id = None
st.session_state.username = None
def show_login_page():
"""Display login page"""
st.sidebar.header("Login")
with st.sidebar.form("login_form"):
username = st.text_input("Username")
password = st.text_input("Password", type="password")
submit = st.form_submit_button("Login")
if submit:
if authenticate_user(username, password):
st.rerun()
else:
st.error("Invalid username or password")
st.info("Default login: **admin** / **admin123**")
def authenticate_user(username, password):
"""Authenticate user credentials"""
session = Session()
user = session.query(User).filter_by(email=username).first()
if user and user.password_hash == hashlib.sha256(password.encode()).hexdigest():
st.session_state.logged_in = True
st.session_state.user_role = user.role
st.session_state.user_id = user.id
st.session_state.username = user.name
session.close()
return True
session.close()
return False
def logout():
"""Logout user"""
st.session_state.logged_in = False
st.session_state.user_role = None
st.session_state.user_id = None
st.session_state.username = None |