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()