dev1461 commited on
Commit
14d139f
Β·
verified Β·
1 Parent(s): 80e7d3c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -83
app.py CHANGED
@@ -5,20 +5,14 @@ import random
5
  users = {}
6
  otp_store = {}
7
 
8
- # =========================
9
- # STATE NAVIGATION
10
- # =========================
11
- def go_to(page):
12
- return page
13
-
14
  # =========================
15
  # SIGNUP
16
  # =========================
17
  def signup(username, password):
18
  if username in users:
19
- return "❌ User already exists", "signup"
20
  users[username] = password
21
- return "βœ… Signup successful! Please login.", "login"
22
 
23
  # =========================
24
  # LOGIN
@@ -27,16 +21,16 @@ def login(username, password):
27
  if username in users and users[username] == password:
28
  otp = random.randint(1000, 9999)
29
  otp_store[username] = otp
30
- return f"OTP: {otp} (demo)", "otp", username
31
- return "❌ Invalid credentials", "login", ""
32
 
33
  # =========================
34
  # OTP VERIFY
35
  # =========================
36
  def verify_otp(username, otp_input):
37
  if username in otp_store and str(otp_store[username]) == str(otp_input):
38
- return "βœ… Login Successful", "dashboard", True
39
- return "❌ Invalid OTP", "otp", False
40
 
41
  # =========================
42
  # PREDICT
@@ -60,78 +54,49 @@ def predict(logged_in, *inputs):
60
  # =========================
61
  with gr.Blocks() as demo:
62
 
63
- page = gr.State("home")
64
- current_user = gr.State("")
65
  logged_in = gr.State(False)
66
 
67
- # ================= HOME =================
68
- with gr.Column(visible=True) as home_page:
69
- gr.Markdown("# πŸ” Secure IDS System")
70
- login_btn = gr.Button("Login")
71
- signup_btn = gr.Button("Signup")
72
-
73
- # ================= SIGNUP =================
74
- with gr.Column(visible=False) as signup_page:
75
- gr.Markdown("## Signup")
76
- su_user = gr.Textbox(label="Username")
77
- su_pass = gr.Textbox(label="Password", type="password")
78
- su_btn = gr.Button("Create Account")
79
- su_out = gr.Textbox()
80
-
81
- # ================= LOGIN =================
82
- with gr.Column(visible=False) as login_page:
83
- gr.Markdown("## Login")
84
- li_user = gr.Textbox(label="Username")
85
- li_pass = gr.Textbox(label="Password", type="password")
86
- li_btn = gr.Button("Login")
87
- li_out = gr.Textbox()
88
-
89
- # ================= OTP =================
90
- with gr.Column(visible=False) as otp_page:
91
- gr.Markdown("## Enter OTP")
92
- otp_input = gr.Textbox()
93
- otp_btn = gr.Button("Verify")
94
- otp_out = gr.Textbox()
95
-
96
- # ================= DASHBOARD =================
97
- with gr.Column(visible=False) as dashboard_page:
98
- gr.Markdown("## IDS Dashboard")
99
-
100
- inputs = [gr.Number(label=f"Feature {i+1}") for i in range(10)]
101
- pred_btn = gr.Button("Analyze")
102
- output = gr.Markdown()
103
-
104
- # ================= NAVIGATION LOGIC =================
105
- def render(page_name):
106
- return (
107
- gr.update(visible=page_name=="home"),
108
- gr.update(visible=page_name=="signup"),
109
- gr.update(visible=page_name=="login"),
110
- gr.update(visible=page_name=="otp"),
111
- gr.update(visible=page_name=="dashboard")
112
- )
113
-
114
- # Home buttons
115
- login_btn.click(lambda: "login", None, page).then(render, page,
116
- [home_page, signup_page, login_page, otp_page, dashboard_page])
117
-
118
- signup_btn.click(lambda: "signup", None, page).then(render, page,
119
- [home_page, signup_page, login_page, otp_page, dashboard_page])
120
-
121
- # Signup action
122
- su_btn.click(signup, [su_user, su_pass], [su_out, page]).then(render, page,
123
- [home_page, signup_page, login_page, otp_page, dashboard_page])
124
-
125
- # Login action
126
- li_btn.click(login, [li_user, li_pass], [li_out, page, current_user]).then(render, page,
127
- [home_page, signup_page, login_page, otp_page, dashboard_page])
128
-
129
- # OTP verify
130
- otp_btn.click(verify_otp, [current_user, otp_input],
131
- [otp_out, page, logged_in]).then(render, page,
132
- [home_page, signup_page, login_page, otp_page, dashboard_page])
133
-
134
- # Prediction
135
- pred_btn.click(predict, [logged_in] + inputs, output)
136
 
137
  demo.launch()
 
5
  users = {}
6
  otp_store = {}
7
 
 
 
 
 
 
 
8
  # =========================
9
  # SIGNUP
10
  # =========================
11
  def signup(username, password):
12
  if username in users:
13
+ return "❌ User already exists"
14
  users[username] = password
15
+ return "βœ… Signup successful! Go to Login tab."
16
 
17
  # =========================
18
  # LOGIN
 
21
  if username in users and users[username] == password:
22
  otp = random.randint(1000, 9999)
23
  otp_store[username] = otp
24
+ return f"OTP generated: {otp} (demo)"
25
+ return "❌ Invalid credentials"
26
 
27
  # =========================
28
  # OTP VERIFY
29
  # =========================
30
  def verify_otp(username, otp_input):
31
  if username in otp_store and str(otp_store[username]) == str(otp_input):
32
+ return "βœ… Login Successful", True
33
+ return "❌ Invalid OTP", False
34
 
35
  # =========================
36
  # PREDICT
 
54
  # =========================
55
  with gr.Blocks() as demo:
56
 
 
 
57
  logged_in = gr.State(False)
58
 
59
+ gr.Markdown("# πŸ” Secure IDS System")
60
+
61
+ with gr.Tabs():
62
+
63
+ # SIGNUP TAB
64
+ with gr.Tab("Signup"):
65
+ su_user = gr.Textbox(label="Username")
66
+ su_pass = gr.Textbox(label="Password", type="password")
67
+ su_btn = gr.Button("Signup")
68
+ su_out = gr.Textbox()
69
+
70
+ su_btn.click(signup, [su_user, su_pass], su_out)
71
+
72
+ # LOGIN TAB
73
+ with gr.Tab("Login"):
74
+ li_user = gr.Textbox(label="Username")
75
+ li_pass = gr.Textbox(label="Password", type="password")
76
+ li_btn = gr.Button("Login")
77
+ li_out = gr.Textbox()
78
+
79
+ li_btn.click(login, [li_user, li_pass], li_out)
80
+
81
+ # OTP TAB
82
+ with gr.Tab("OTP Verification"):
83
+ otp_user = gr.Textbox(label="Username")
84
+ otp_input = gr.Textbox(label="OTP")
85
+ otp_btn = gr.Button("Verify")
86
+ otp_out = gr.Textbox()
87
+
88
+ otp_btn.click(
89
+ verify_otp,
90
+ [otp_user, otp_input],
91
+ [otp_out, logged_in]
92
+ )
93
+
94
+ # DASHBOARD TAB
95
+ with gr.Tab("IDS Dashboard"):
96
+ inputs = [gr.Number(label=f"Feature {i+1}") for i in range(10)]
97
+ pred_btn = gr.Button("Analyze")
98
+ output = gr.Markdown()
99
+
100
+ pred_btn.click(predict, [logged_in] + inputs, output)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
 
102
  demo.launch()