Spaces:
Sleeping
Sleeping
File size: 3,145 Bytes
10dce96 43b2fb8 5c827eb ee39810 32ba94f 9c6b363 32ba94f 0f68bb2 10dce96 924e5d5 10dce96 924e5d5 10dce96 924e5d5 c29d33d 924e5d5 10dce96 924e5d5 c29d33d 10dce96 924e5d5 10dce96 924e5d5 10dce96 924e5d5 10dce96 924e5d5 10dce96 924e5d5 |
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
import streamlit as st
import firebase_admin
from firebase_admin import credentials, auth
import os
import json
import smtplib
from email.mime.text import MIMEText
# Load Firebase credentials from Hugging Face Secrets
firebase_creds = os.getenv("FIREBASE_CREDENTIALS")
sender_email = os.getenv("email")
email_pass = os.getenv("email_pass")
if firebase_creds:
firebase_creds = json.loads(firebase_creds)
else:
st.error("Firebase credentials not found. Please check your secrets.")
# Initialize Firebase (only once)
if not firebase_admin._apps:
cred = credentials.Certificate(firebase_creds) # Replace with your Firebase service account key
firebase_admin.initialize_app(cred)
# Initialize session state
if "logged_in" not in st.session_state:
st.session_state.logged_in = False
if "current_user" not in st.session_state:
st.session_state.current_user = None
# Callback for registration
def register_callback():
email = st.session_state.reg_email
password = st.session_state.reg_password
try:
# Create a new user in Firebase
user = auth.create_user(email=email, password=password)
st.success("Registration successful! Please log in.")
except Exception as e:
st.error(f"Registration failed: {e}")
# Callback for login
def login_callback():
email = st.session_state.login_email
password = st.session_state.login_password
try:
# Authenticate user with Firebase
user = auth.get_user_by_email(email)
st.session_state.logged_in = True
st.session_state.current_user = user.uid # Store the user UID in session state
st.success("Logged in successfully!")
except Exception as e:
st.error(f"Login failed: {e}")
# Callback for logout
def logout_callback():
st.session_state.logged_in = False
st.session_state.current_user = None
st.info("Logged out successfully!")
# Registration form
def registration_form():
with st.form("Registration"):
st.subheader("Register")
email = st.text_input("Email", key="reg_email")
password = st.text_input("Password (min 6 characters)", type="password", key="reg_password")
submit_button = st.form_submit_button("Register", on_click=register_callback)
# Login form
def login_form():
with st.form("Login"):
st.subheader("Login")
email = st.text_input("Email", key="login_email")
password = st.text_input("Password", type="password", key="login_password")
submit_button = st.form_submit_button("Login", on_click=login_callback)
# Main app screen (after login)
def main_app():
st.subheader(f"Welcome, {st.session_state.current_user}!")
st.write("Enter a name below to get a greeting.")
# Input field for name
name = st.text_input("Enter a name", key="name_input")
# Display greeting in real-time
if name:
st.write(f"Hello {name}!")
# Logout button
if st.button("Logout", on_click=logout_callback):
pass
# Render the appropriate screen based on login status
if st.session_state.logged_in:
main_app()
else:
registration_form()
login_form() |