Spaces:
Sleeping
Sleeping
File size: 3,160 Bytes
2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 f48e9bb 2565588 |
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
import gradio as gr
import sqlite3
import os
DB_PATH = "temp.db"
# --- Database Setup ---
def init_db():
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE,
password TEXT
)
""")
conn.commit()
conn.close()
init_db()
# --- Functions ---
def signup(username, password):
if not username or not password:
return "β οΈ Please enter both username and password."
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
try:
cursor.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
conn.commit()
conn.close()
return "β
Signup successful! Please login."
except sqlite3.IntegrityError:
conn.close()
return "β Username already exists. Try another."
def login(username, password):
if username == "1234" and password == "1234":
return "β
Admin logged in! You can download the database.", "Admin"
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE username=? AND password=?", (username, password))
user = cursor.fetchone()
conn.close()
if user:
return f"β
Welcome, {username}!", username
else:
return "β Invalid credentials.", None
def logout():
return "β
Logged out successfully!", None
def download_db():
if os.path.exists(DB_PATH):
return DB_PATH
return None
# --- Gradio UI ---
with gr.Blocks() as demo:
gr.Markdown("## π Simple Login System with Signup & DB Download")
with gr.Tab("Signup"):
signup_user = gr.Textbox(label="Username")
signup_pass = gr.Textbox(label="Password", type="password")
signup_btn = gr.Button("Signup")
signup_out = gr.Textbox(label="Signup Status", interactive=False)
signup_btn.click(signup, inputs=[signup_user, signup_pass], outputs=signup_out)
with gr.Tab("Login"):
login_user = gr.Textbox(label="Username")
login_pass = gr.Textbox(label="Password", type="password")
login_btn = gr.Button("Login")
login_status = gr.Textbox(label="Login Status", interactive=False)
current_user = gr.State() # store logged-in user
login_btn.click(login, inputs=[login_user, login_pass], outputs=[login_status, current_user])
with gr.Tab("Home"):
home_status = gr.Textbox(label="Home Status", interactive=False)
logout_btn = gr.Button("Logout")
download_btn = gr.File(label="Download DB", interactive=False)
# logout clears user
logout_btn.click(logout, outputs=[home_status, current_user])
# allow admin to download DB
login_btn.click(fn=lambda u: "Welcome Home!" if u else "β Please login first.",
inputs=current_user, outputs=home_status)
login_btn.click(fn=lambda u: download_db() if u == "Admin" else None,
inputs=current_user, outputs=download_btn)
demo.launch()
|