File size: 1,126 Bytes
a1bf333
 
 
868a941
e1025c0
a1bf333
868a941
 
ed4b05a
cbc1545
868a941
cbc1545
 
 
 
 
 
868a941
cbc1545
 
868a941
cbc1545
 
868a941
cbc1545
868a941
cbc1545
868a941
a1bf333
cbc1545
 
 
868a941
cbc1545
a1bf333
868a941
cbc1545
868a941
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
import os
import gradio as gr

# Get tokens from environment
ACCESS_TOKEN = os.environ.get("ACCESS_TOKEN")
read_key = os.environ.get('HF_TOKEN')

# Load external app (returns a component)
demo_app = gr.load("userIdc2024/lipsync-video-generator", token=read_key, src="spaces")

# Token verification function
def verify_token(user_token):
    if user_token == ACCESS_TOKEN:
        return gr.update(visible=True), gr.update(visible=False), ""
    else:
        return gr.update(visible=False), gr.update(visible=True), "❌ Invalid token. Please try again."

# Build main UI
with gr.Blocks() as protected_app:
    gr.Markdown("## 🔐 Enter Access Token to Use the App")

    token_input = gr.Textbox(label="Access Token", type="password")
    verify_btn = gr.Button("Unlock App")
    error_msg = gr.Markdown("", visible=False)

    app_container = gr.Column(visible=False)
    with app_container:
        demo_app.render()  # Safe here since it's gr.load()

    verify_btn.click(
        fn=verify_token,
        inputs=token_input,
        outputs=[app_container, error_msg, error_msg]
    )

# Launch
protected_app.launch()