creative2 / app.py
artintel235's picture
Update app.py
c29d33d verified
raw
history blame
3.15 kB
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()