Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from utils import init_supabase | |
| def get_user_by_username(username): | |
| """Get user from database by username""" | |
| supabase = init_supabase() | |
| if not supabase: | |
| return None | |
| try: | |
| # First try the function | |
| response = supabase.rpc('get_user_by_username', {'username_param': username}).execute() | |
| if response.data: | |
| return response.data[0] | |
| # Fallback: query the table directly | |
| response = supabase.table('users').select('*').eq('username', username).execute() | |
| if response.data: | |
| return response.data[0] | |
| return None | |
| except Exception as e: | |
| st.error(f"Database error: {str(e)}") | |
| return None | |
| def show_login_page(): | |
| """Show a simple custom login page""" | |
| st.title("🎭 Cura Learning Debate Class") | |
| st.markdown("### Welcome to Debate Class!") | |
| st.markdown("Please log in to access your course materials.") | |
| # Simple login form | |
| with st.form("login_form"): | |
| username = st.text_input("Username") | |
| password = st.text_input("Password", type="password") | |
| submit_button = st.form_submit_button("Login") | |
| if submit_button: | |
| if check_credentials(username, password): | |
| st.session_state.authenticated = True | |
| st.session_state.username = username | |
| st.session_state.name = get_user_name(username) | |
| st.success(f'Welcome {st.session_state.name}!') | |
| st.rerun() | |
| else: | |
| st.error('Invalid username or password') | |
| def check_credentials(username, password): | |
| """Check if username and password are valid""" | |
| if not username or not password: | |
| return False | |
| # Get user from database | |
| user = get_user_by_username(username) | |
| if user: | |
| # Get the password from the database (plain text for now) | |
| stored_password = user.get('password') | |
| if stored_password: | |
| # Compare passwords directly (plain text) | |
| return password == stored_password | |
| return False | |
| def get_user_name(username): | |
| """Get the display name for a username""" | |
| user = get_user_by_username(username) | |
| if user: | |
| return user.get('full_name', username) | |
| return username | |
| def handle_logout(): | |
| """Handle logout functionality""" | |
| if st.button("Logout"): | |
| st.session_state.authenticated = False | |
| st.session_state.username = None | |
| st.session_state.name = None | |
| st.rerun() | |
| def is_authenticated(): | |
| """Check if user is authenticated""" | |
| return st.session_state.get('authenticated', False) |