Springboardmen commited on
Commit
afd21fc
·
verified ·
1 Parent(s): 9831707

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +71 -0
app.py ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from auth import generate_otp, create_jwt, verify_jwt
3
+
4
+ st.set_page_config(page_title="FitPlan AI Login")
5
+
6
+ # Initialize session state
7
+ if "otp" not in st.session_state:
8
+ st.session_state.otp = None
9
+
10
+ if "authenticated" not in st.session_state:
11
+ st.session_state.authenticated = False
12
+
13
+ if "token" not in st.session_state:
14
+ st.session_state.token = None
15
+
16
+
17
+ st.title("🔐 FitPlan AI - OTP Login")
18
+
19
+ # ------------------------
20
+ # STEP 1: Enter Email
21
+ # ------------------------
22
+ if not st.session_state.authenticated:
23
+
24
+ email = st.text_input("Enter your Email")
25
+
26
+ if st.button("Send OTP"):
27
+ if email:
28
+ otp = generate_otp()
29
+ st.session_state.otp = otp
30
+ st.session_state.email = email
31
+
32
+ # In real system, send via email/SMS
33
+ st.success(f"OTP Sent! (Demo OTP: {otp})")
34
+ else:
35
+ st.error("Please enter email")
36
+
37
+ # ------------------------
38
+ # STEP 2: Verify OTP
39
+ # ------------------------
40
+ if st.session_state.otp:
41
+ entered_otp = st.text_input("Enter OTP")
42
+
43
+ if st.button("Verify OTP"):
44
+ if entered_otp == st.session_state.otp:
45
+ token = create_jwt(st.session_state.email)
46
+ st.session_state.token = token
47
+ st.session_state.authenticated = True
48
+ st.success("Login Successful!")
49
+ st.rerun()
50
+ else:
51
+ st.error("Invalid OTP")
52
+
53
+
54
+ # ------------------------
55
+ # Protected Page
56
+ # ------------------------
57
+ else:
58
+ decoded = verify_jwt(st.session_state.token)
59
+
60
+ if decoded:
61
+ st.success(f"Welcome {decoded['email']} 🎉")
62
+
63
+ st.write("You can now access FitPlan AI")
64
+
65
+ if st.button("Logout"):
66
+ st.session_state.authenticated = False
67
+ st.session_state.token = None
68
+ st.session_state.otp = None
69
+ st.rerun()
70
+ else:
71
+ st.error("Session Expired")