artintel235 commited on
Commit
e689a79
·
verified ·
1 Parent(s): ceda783

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -5
app.py CHANGED
@@ -25,6 +25,9 @@ if "logged_in" not in st.session_state:
25
  st.session_state.logged_in = False
26
  if "current_user" not in st.session_state:
27
  st.session_state.current_user = None
 
 
 
28
 
29
  def send_verification_email(id_token):
30
  url = f'https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode?key={FIREBASE_API_KEY}'
@@ -41,15 +44,22 @@ def send_verification_email(id_token):
41
  return {'status': 'error', 'message': result['error']['message']}
42
  else:
43
  return {'status': 'success', 'email': result['email']}
44
-
45
  # Callback for registration
46
  def register_callback():
47
  email = st.session_state.reg_email
48
  password = st.session_state.reg_password
 
49
  try:
 
50
  user = auth.create_user(email=email, password=password)
 
 
 
 
51
  st.success("Registration successful! Sending verification email...")
52
 
 
53
  url = f'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key={FIREBASE_API_KEY}'
54
  data = {
55
  'email': email,
@@ -75,12 +85,25 @@ def register_callback():
75
 
76
  # Callback for login
77
  def login_callback():
78
- email = st.session_state.login_email
79
  password = st.session_state.login_password
80
  try:
81
- user = auth.get_user_by_email(email)
 
 
 
 
 
 
 
 
 
 
 
 
82
  st.session_state.logged_in = True
83
  st.session_state.current_user = user.uid
 
84
  st.success("Logged in successfully!")
85
  except Exception as e:
86
  st.error(f"Login failed: {e}")
@@ -89,6 +112,7 @@ def login_callback():
89
  def logout_callback():
90
  st.session_state.logged_in = False
91
  st.session_state.current_user = None
 
92
  st.info("Logged out successfully!")
93
 
94
  # Function to store text in Firebase Realtime Database
@@ -109,6 +133,7 @@ def registration_form():
109
  with st.form("Registration"):
110
  st.subheader("Register")
111
  email = st.text_input("Email", key="reg_email")
 
112
  password = st.text_input("Password (min 6 characters)", type="password", key="reg_password")
113
  submit_button = st.form_submit_button("Register", on_click=register_callback)
114
 
@@ -116,13 +141,13 @@ def registration_form():
116
  def login_form():
117
  with st.form("Login"):
118
  st.subheader("Login")
119
- email = st.text_input("Email", key="login_email")
120
  password = st.text_input("Password", type="password", key="login_password")
121
  submit_button = st.form_submit_button("Login", on_click=login_callback)
122
 
123
  # Main app screen (after login)
124
  def main_app():
125
- st.subheader(f"Welcome, {st.session_state.current_user}!")
126
  st.write("Enter a name below to get a greeting.")
127
 
128
  # Input field for name
 
25
  st.session_state.logged_in = False
26
  if "current_user" not in st.session_state:
27
  st.session_state.current_user = None
28
+ if "display_name" not in st.session_state:
29
+ st.session_state.display_name = None
30
+
31
 
32
  def send_verification_email(id_token):
33
  url = f'https://identitytoolkit.googleapis.com/v1/accounts:sendOobCode?key={FIREBASE_API_KEY}'
 
44
  return {'status': 'error', 'message': result['error']['message']}
45
  else:
46
  return {'status': 'success', 'email': result['email']}
47
+
48
  # Callback for registration
49
  def register_callback():
50
  email = st.session_state.reg_email
51
  password = st.session_state.reg_password
52
+ display_name = st.session_state.reg_display_name
53
  try:
54
+ # Step 1: Create a new user in Firebase
55
  user = auth.create_user(email=email, password=password)
56
+
57
+ # Step 2: Update the user profile with the display name
58
+ auth.update_user(user.uid, display_name=display_name)
59
+
60
  st.success("Registration successful! Sending verification email...")
61
 
62
+ # Step 3: Sign in the user programmatically to get the id_token
63
  url = f'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key={FIREBASE_API_KEY}'
64
  data = {
65
  'email': email,
 
85
 
86
  # Callback for login
87
  def login_callback():
88
+ login_identifier = st.session_state.login_identifier
89
  password = st.session_state.login_password
90
  try:
91
+ # Try to get the user by email first
92
+ try:
93
+ user = auth.get_user_by_email(login_identifier)
94
+ except:
95
+ # If getting by email fails, try to get the user by display name
96
+ user_list = auth.list_users()
97
+ for user_info in user_list.users:
98
+ if user_info.display_name == login_identifier:
99
+ user = user_info
100
+ break
101
+ else:
102
+ raise Exception("User not found")
103
+
104
  st.session_state.logged_in = True
105
  st.session_state.current_user = user.uid
106
+ st.session_state.display_name = user.display_name # Store the display name
107
  st.success("Logged in successfully!")
108
  except Exception as e:
109
  st.error(f"Login failed: {e}")
 
112
  def logout_callback():
113
  st.session_state.logged_in = False
114
  st.session_state.current_user = None
115
+ st.session_state.display_name = None
116
  st.info("Logged out successfully!")
117
 
118
  # Function to store text in Firebase Realtime Database
 
133
  with st.form("Registration"):
134
  st.subheader("Register")
135
  email = st.text_input("Email", key="reg_email")
136
+ display_name = st.text_input("Display Name", key="reg_display_name")
137
  password = st.text_input("Password (min 6 characters)", type="password", key="reg_password")
138
  submit_button = st.form_submit_button("Register", on_click=register_callback)
139
 
 
141
  def login_form():
142
  with st.form("Login"):
143
  st.subheader("Login")
144
+ login_identifier = st.text_input("Email or Username", key="login_identifier")
145
  password = st.text_input("Password", type="password", key="login_password")
146
  submit_button = st.form_submit_button("Login", on_click=login_callback)
147
 
148
  # Main app screen (after login)
149
  def main_app():
150
+ st.subheader(f"Welcome, {st.session_state.display_name}!")
151
  st.write("Enter a name below to get a greeting.")
152
 
153
  # Input field for name