parass13 commited on
Commit
c47a6e5
·
verified ·
1 Parent(s): 3934b8b

Update components/auth.py

Browse files
Files changed (1) hide show
  1. components/auth.py +31 -32
components/auth.py CHANGED
@@ -1,39 +1,50 @@
1
  # components/auth.py
2
 
3
- from utils.db import sign_up_user, login_user
4
  import gradio as gr
5
 
6
- def register(email, password):
7
- """
8
- Handler for the signup process.
9
- On success, it will now also return empty strings to clear the input fields.
10
- """
11
- if not email or not password:
12
- return "❌ Email and password cannot be empty.", gr.update(), gr.update()
13
 
14
- result = sign_up_user(email, password)
 
15
 
16
  if result and result.user:
17
  message = "✅ Signup successful! You can now log in."
18
  if result.user and not result.session:
19
  message = "✅ Signup successful! Please check your email to confirm your account."
20
- return message, "", ""
 
21
 
22
  if hasattr(result, 'error') and result.error:
23
- return f"❌ Signup Failed: {result.error.message}", gr.update(), gr.update()
 
24
 
25
- return "❌ Signup failed. An unknown error occurred.", gr.update(), gr.update()
 
26
 
27
 
28
  def login(email, password, current_user_state):
29
- """Handler for the login process."""
30
  if not email or not password:
31
  return "❌ Email and password cannot be empty.", current_user_state, gr.update()
32
 
33
  result = login_user(email, password)
34
 
35
  if result and result.session:
36
- new_user_state = {"email": email, "id": result.user.id, "logged_in": True}
 
 
 
 
 
 
 
37
  return f"✅ Login successful! Redirecting...", new_user_state, gr.Tabs(selected="prediction_tab")
38
 
39
  if hasattr(result, 'error') and result.error:
@@ -43,24 +54,12 @@ def login(email, password, current_user_state):
43
 
44
 
45
  def logout(current_user_state):
46
- """
47
- Handler for the logout process.
48
- Now also returns values to clear the login form, prediction form, AND the result box.
49
- """
50
- new_user_state = {"email": None, "id": None, "logged_in": False}
51
 
52
- # Message, new state, redirect, then empty values for all fields to be cleared.
53
  return (
54
- "👋 Logged out successfully.",
55
- new_user_state,
56
- gr.Tabs(selected="home_tab"),
57
- "", # Clear login email
58
- "", # Clear login password
59
- None, # Clear pregnancies
60
- None, # Clear glucose
61
- None, # Clear blood pressure
62
- None, # Clear insulin
63
- None, # Clear BMI
64
- None, # Clear age
65
- "" # NEW: Clear the prediction result output textbox
66
  )
 
1
  # components/auth.py
2
 
3
+ from utils.db import sign_up_user, login_user, supabase
4
  import gradio as gr
5
 
6
+ # The function now accepts 'gender' as a third argument
7
+ def register(email, password, gender):
8
+ """Handler for the signup process, now including gender."""
9
+ # Check if all three inputs are provided
10
+ if not all([email, password, gender]):
11
+ # Return a no-op for all 4 output components on failure
12
+ return "❌ Email, password, and gender are required.", gr.update(), gr.update(), gr.update()
13
 
14
+ # The 'gender' is passed to the sign_up_user utility function
15
+ result = sign_up_user(email, password, gender)
16
 
17
  if result and result.user:
18
  message = "✅ Signup successful! You can now log in."
19
  if result.user and not result.session:
20
  message = "✅ Signup successful! Please check your email to confirm your account."
21
+ # On success, clear all three signup fields
22
+ return message, "", "", None # Clear email, password, and gender radio
23
 
24
  if hasattr(result, 'error') and result.error:
25
+ # On failure, don't clear the fields
26
+ return f"❌ Signup Failed: {result.error.message}", gr.update(), gr.update(), gr.update()
27
 
28
+ # On unknown failure, don't clear the fields
29
+ return "❌ Signup failed. An unknown error occurred.", gr.update(), gr.update(), gr.update()
30
 
31
 
32
  def login(email, password, current_user_state):
33
+ """Handler for login. Now fetches the user's gender from the public.users table."""
34
  if not email or not password:
35
  return "❌ Email and password cannot be empty.", current_user_state, gr.update()
36
 
37
  result = login_user(email, password)
38
 
39
  if result and result.session:
40
+ try:
41
+ profile = supabase.table("users").select("gender").eq("id", result.user.id).single().execute()
42
+ user_gender = profile.data.get("gender") if profile.data else None
43
+ except Exception as e:
44
+ print(f"Could not fetch user profile: {e}")
45
+ user_gender = None
46
+
47
+ new_user_state = {"email": email, "id": result.user.id, "logged_in": True, "gender": user_gender}
48
  return f"✅ Login successful! Redirecting...", new_user_state, gr.Tabs(selected="prediction_tab")
49
 
50
  if hasattr(result, 'error') and result.error:
 
54
 
55
 
56
  def logout(current_user_state):
57
+ """Handler for logout. Now clears all state and form fields, including the pregnancies row visibility."""
58
+ new_user_state = {"email": None, "id": None, "logged_in": False, "gender": None}
 
 
 
59
 
60
+ # The return order must match the outputs list in app.py exactly
61
  return (
62
+ "👋 Logged out successfully.", new_user_state, gr.Tabs(selected="home_tab"),
63
+ "", "", None, None, None, None, None, None, "", # Clear forms
64
+ gr.update(visible=False) # Hide pregnancies row
 
 
 
 
 
 
 
 
 
65
  )