import gradio as gr from src.services.auth_service import authenticate_user def render_login(db_path: str, auth_state: gr.State): with gr.Row(): with gr.Column(): gr.Markdown("## Login") username = gr.Textbox(label="Username") password = gr.Textbox(label="Password", type="password") login_btn = gr.Button("Login", variant="primary") logout_btn = gr.Button("Logout", visible=False) status = gr.Markdown("🔒 Not logged in") def do_login(u, p): user = authenticate_user(db_path, u, p) if not user: return None, "❌ Invalid credentials", False, True return ( user, f"✅ Logged in as **{user['username']}**", True, False, ) def do_logout(): return None, "🔒 Logged out", False, True login_btn.click( do_login, inputs=[username, password], outputs=[auth_state, status, logout_btn, login_btn], ) logout_btn.click( do_logout, outputs=[auth_state, status, logout_btn, login_btn], )