Spaces:
Sleeping
Sleeping
File size: 3,308 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 7cbd08c 2565588 f48e9bb 7cbd08c f48e9bb 7cbd08c f48e9bb 7cbd08c f48e9bb 7cbd08c 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 99 100 101 102 103 104 105 106 |
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 update_home(user):
if user == "Admin":
return "π Welcome Admin! You can download the DB."
elif user:
return f"π Welcome Home, {user}!"
else:
return "β Please login first."
def download_db(user):
if user == "Admin" and 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")
current_user = gr.State()
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)
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)
# Update home page whenever current_user changes
current_user.change(update_home, inputs=current_user, outputs=home_status)
# Logout clears user
logout_btn.click(logout, outputs=[home_status, current_user])
# Enable DB download only for Admin
current_user.change(download_db, inputs=current_user, outputs=download_btn)
demo.launch()
|