Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import hashlib | |
| import os | |
| UPLOAD_FOLDER = "uploads" | |
| os.makedirs(UPLOAD_FOLDER, exist_ok=True) | |
| USERS = { | |
| "admin": hashlib.sha256("admin123".encode()).hexdigest(), | |
| "demo": hashlib.sha256("demo".encode()).hexdigest() | |
| } | |
| session = {"user": None} | |
| # ====================== | |
| # BACKEND | |
| # ====================== | |
| def login(username, password): | |
| h = hashlib.sha256(password.encode()).hexdigest() | |
| if username in USERS and USERS[username] == h: | |
| session["user"] = username | |
| return "✅ Connecté", gr.update(visible=True) | |
| return "❌ Mauvais login", gr.update(visible=False) | |
| def upload(file): | |
| if session["user"] is None: | |
| return "❌ Non connecté" | |
| if file is None: | |
| return "❌ Aucun fichier" | |
| path = os.path.join(UPLOAD_FOLDER, file.name) | |
| with open(path, "wb") as f: | |
| f.write(file.read()) | |
| return f"✅ Upload : {file.name}" | |
| def list_files(): | |
| if session["user"] is None: | |
| return [] | |
| return os.listdir(UPLOAD_FOLDER) | |
| # ====================== | |
| # UI (GRADIO) | |
| # ====================== | |
| with gr.Blocks() as app: | |
| # LOGIN | |
| with gr.Column() as login_ui: | |
| gr.Markdown("# 🔐 Login") | |
| user = gr.Textbox(label="Username") | |
| pw = gr.Textbox(label="Password", type="password") | |
| btn = gr.Button("Login") | |
| status = gr.Textbox() | |
| # APP | |
| with gr.Column(visible=False) as main_ui: | |
| gr.Markdown("# 📁 Gestionnaire") | |
| file = gr.File() | |
| btn_upload = gr.Button("Upload") | |
| upload_status = gr.Textbox() | |
| btn_list = gr.Button("Lister fichiers") | |
| files = gr.JSON() | |
| # EVENTS | |
| btn.click(login, [user, pw], [status, main_ui]) | |
| btn_upload.click(upload, file, upload_status) | |
| btn_list.click(list_files, None, files) | |
| app.launch() |