sanjeevbora commited on
Commit
8996b37
·
verified ·
1 Parent(s): 2426d62
Files changed (1) hide show
  1. app.py +28 -21
app.py CHANGED
@@ -22,7 +22,7 @@ import re
22
  import transformers
23
  import spaces
24
  import requests
25
- from urllib.parse import urlencode
26
 
27
  # Initialize embeddings and ChromaDB
28
  model_name = "sentence-transformers/all-mpnet-base-v2"
@@ -120,14 +120,18 @@ def exchange_code_for_token(auth_code):
120
  }
121
 
122
  response = requests.post(TOKEN_URL, data=data)
123
-
124
  if response.status_code == 200:
125
  token_data = response.json()
126
- access_token = token_data.get('access_token')
127
- return access_token
128
  else:
129
  return None
130
 
 
 
 
 
 
 
131
  def login_user(auth_code):
132
  # Exchange the authorization code for an access token
133
  token = exchange_code_for_token(auth_code)
@@ -165,33 +169,36 @@ def chat(query, history=None):
165
  def clear_input():
166
  return "", # Return empty string to clear input field
167
 
 
168
  with gr.Blocks() as interface:
169
  gr.Markdown("## RAG Chatbot")
170
  gr.Markdown("Please log in to continue.")
171
 
172
- # Custom HTML to show login link
173
- login_link = gr.HTML(f'<a href="{login_url}" target="_blank">Click here to login with Microsoft</a>')
174
-
175
- # Login button to simulate the login process
176
- login_button = gr.Button("Login")
177
 
178
  # Components for chat (initially hidden)
179
  input_box = gr.Textbox(label="Enter your question", placeholder="Type your question here...", visible=False)
180
  submit_btn = gr.Button("Submit", visible=False)
181
  chat_history = gr.Chatbot(label="Chat History", visible=False)
182
 
183
- # Handle login button click
184
- login_button.click(
185
- login_user,
186
- inputs=[],
187
- outputs=[login_button], # You can also update the UI to show login status
188
- queue=False
189
- ).then(
190
- lambda token: check_login(is_logged_in(token)),
191
- inputs=[],
192
- outputs=[input_box, submit_btn]
193
- )
194
-
 
 
 
 
 
195
  # Input submission and chat handling
196
  submit_btn.click(chat, inputs=[input_box, chat_history], outputs=[chat_history, input_box])
197
 
 
22
  import transformers
23
  import spaces
24
  import requests
25
+ from urllib.parse import urlencode, urlparse, parse_qs
26
 
27
  # Initialize embeddings and ChromaDB
28
  model_name = "sentence-transformers/all-mpnet-base-v2"
 
120
  }
121
 
122
  response = requests.post(TOKEN_URL, data=data)
 
123
  if response.status_code == 200:
124
  token_data = response.json()
125
+ return token_data.get('access_token')
 
126
  else:
127
  return None
128
 
129
+ def handle_redirect(auth_code):
130
+ token = exchange_code_for_token(auth_code)
131
+ if token:
132
+ return True # Successful login
133
+ return False # Failed login
134
+
135
  def login_user(auth_code):
136
  # Exchange the authorization code for an access token
137
  token = exchange_code_for_token(auth_code)
 
169
  def clear_input():
170
  return "", # Return empty string to clear input field
171
 
172
+ # Gradio interface
173
  with gr.Blocks() as interface:
174
  gr.Markdown("## RAG Chatbot")
175
  gr.Markdown("Please log in to continue.")
176
 
177
+ login_link = gr.HTML(show_login_button())
178
+ login_status = gr.Textbox(label="Login Status", visible=False)
 
 
 
179
 
180
  # Components for chat (initially hidden)
181
  input_box = gr.Textbox(label="Enter your question", placeholder="Type your question here...", visible=False)
182
  submit_btn = gr.Button("Submit", visible=False)
183
  chat_history = gr.Chatbot(label="Chat History", visible=False)
184
 
185
+ # Handle the login link click
186
+ login_link.click(lambda: gr.update(visible=False), inputs=[], outputs=[login_link])
187
+
188
+ # Example redirection logic (replace with actual URL handling)
189
+ @gr.Interface().on_submit
190
+ def on_redirect(url):
191
+ # Extract the authorization code from the URL
192
+ parsed_url = urlparse(url)
193
+ query_params = parse_qs(parsed_url.query)
194
+ auth_code = query_params.get('code')
195
+
196
+ if auth_code:
197
+ if handle_redirect(auth_code[0]): # Pass the first code if there are multiple
198
+ return gr.update(visible=True), gr.update(visible=True), gr.update(visible=True)
199
+ else:
200
+ login_status.update("Login failed.")
201
+
202
  # Input submission and chat handling
203
  submit_btn.click(chat, inputs=[input_box, chat_history], outputs=[chat_history, input_box])
204