Spaces:
Running
Running
File size: 1,846 Bytes
1af2fc7 ccec886 91bbd67 4de0319 ccec886 1af2fc7 91bbd67 ccec886 1af2fc7 4de0319 1af2fc7 ccec886 91bbd67 4de0319 91bbd67 61dd0e0 4de0319 61dd0e0 4de0319 ccec886 4de0319 ccec886 91bbd67 3110228 91bbd67 3110228 91bbd67 3110228 91bbd67 3110228 91bbd67 3110228 1af2fc7 91bbd67 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
import gradio as gr
import gradio.utils
from auth import attach_oauth
if gradio.utils.get_space() is not None:
URL, PORT = "https://wauplin-gradio-oauth-test.hf.space", 7860
else:
URL, PORT = "http://localhost:5173", 5173
TEMPLATE = """
### Name: {name}
### Username: {preferred_username}
### Profile: {profile}
### Website: {website}

You can manage your connected applications in your [settings](https://huggingface.co/settings/connected-applications).
"""
def show_profile(request: gr.Request) -> str:
# request.session in case of websockets (see `def get_request_params`)
# request.request.session in case of direct call
session = getattr(request, "session", None) or getattr(request.request, "session", None)
if session is None: # should never happen...
return "No session attached"
if "user" not in session:
return "Please login first"
return TEMPLATE.format(**session["user"])
def js_open(url: str) -> str:
# Taken from https://cmgdo.com/external-link-in-gradio-button/
return f"function() {{window.open('{url}', '_blank');}}"
with gr.Blocks() as demo:
with gr.Row():
login_button = gr.Button("Login")
login_button.click(None, None, None, _js=js_open(f"{URL}/login/huggingface"))
logout_button = gr.Button("Logout")
logout_button.click(None, None, None, _js=js_open(f"{URL}/logout"))
profile_btn = gr.Button("Show profile")
output = gr.Markdown()
profile_btn.click(fn=show_profile, outputs=output)
old_create_app = gradio.networking.App.create_app
def patched_create_app(*args, **kwargs):
app = old_create_app(*args, **kwargs)
attach_oauth(app)
return app
gradio.networking.App.create_app = patched_create_app
print(URL)
demo.queue()
demo.launch(server_port=PORT)
|