lunarflu HF Staff commited on
Commit
da43acc
·
verified ·
1 Parent(s): 5166981

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -17
app.py CHANGED
@@ -36,27 +36,25 @@ def run_bot():
36
  threading.Thread(target=run_bot).start()
37
 
38
  # Gradio ------------------------------------------------------------------------------------------------------------
39
- def validate_link(request: gr.Request) -> bool:
40
  url_str = str(request.url)
41
  query_params = parse_qs(urlparse(url_str).query)
42
  user_id = query_params.get('user_id', [None])[0]
43
  token = query_params.get('token', [None])[0]
44
 
45
  if user_id is None or token is None:
46
- return False
47
 
48
  if int(user_id) not in user_tokens or user_tokens[int(user_id)] != token:
49
- return False
50
 
51
- return True
52
 
53
  def hello(profile: gr.OAuthProfile | None, request: gr.Request) -> str:
54
- if not validate_link(request):
55
- return "❌ Invalid link. Please use the link provided by the bot."
56
 
57
- url_str = str(request.url)
58
- query_params = parse_qs(urlparse(url_str).query)
59
- user_id = query_params.get('user_id', [None])[0]
60
 
61
  if profile is None:
62
  return f"❌ Not logged in. User ID: {user_id}"
@@ -65,16 +63,17 @@ def hello(profile: gr.OAuthProfile | None, request: gr.Request) -> str:
65
 
66
  with gr.Blocks() as demo:
67
  gr.Markdown("# Gradio OAuth Space")
68
- login_button = gr.LoginButton()
69
  m1 = gr.Markdown()
70
 
71
- def check_link_and_load():
72
- if validate_link(gr.Request()):
73
- demo.load(hello, inputs=None, outputs=m1)
 
74
  else:
75
- m1.update("❌ Invalid link. Please use the link provided by the bot.")
76
 
77
- check_link_and_load()
 
78
 
79
  def check_login_status():
80
  try:
@@ -89,6 +88,7 @@ with gr.Blocks() as demo:
89
  else:
90
  return f"Logged in as {session.get('username', 'Unknown')}"
91
 
92
- login_button.click(check_login_wrapper, inputs=None, outputs=m1)
 
93
 
94
- demo.launch()
 
36
  threading.Thread(target=run_bot).start()
37
 
38
  # Gradio ------------------------------------------------------------------------------------------------------------
39
+ def validate_link(request: gr.Request):
40
  url_str = str(request.url)
41
  query_params = parse_qs(urlparse(url_str).query)
42
  user_id = query_params.get('user_id', [None])[0]
43
  token = query_params.get('token', [None])[0]
44
 
45
  if user_id is None or token is None:
46
+ return False, None, None
47
 
48
  if int(user_id) not in user_tokens or user_tokens[int(user_id)] != token:
49
+ return False, None, None
50
 
51
+ return True, user_id, token
52
 
53
  def hello(profile: gr.OAuthProfile | None, request: gr.Request) -> str:
54
+ is_valid, user_id, token = validate_link(request)
 
55
 
56
+ if not is_valid:
57
+ return "❌ Invalid link or expired token."
 
58
 
59
  if profile is None:
60
  return f"❌ Not logged in. User ID: {user_id}"
 
63
 
64
  with gr.Blocks() as demo:
65
  gr.Markdown("# Gradio OAuth Space")
 
66
  m1 = gr.Markdown()
67
 
68
+ def conditional_login_button(request: gr.Request):
69
+ is_valid, _, _ = validate_link(request)
70
+ if is_valid:
71
+ return gr.LoginButton()
72
  else:
73
+ return gr.Markdown("❌ Invalid link or expired token.")
74
 
75
+ login_button = conditional_login_button(gr.Request())
76
+ demo.load(hello, inputs=None, outputs=m1)
77
 
78
  def check_login_status():
79
  try:
 
88
  else:
89
  return f"Logged in as {session.get('username', 'Unknown')}"
90
 
91
+ if isinstance(login_button, gr.LoginButton):
92
+ login_button.click(check_login_wrapper, inputs=None, outputs=m1)
93
 
94
+ demo.launch()