| # modules/ui/views/login_view.py | |
| import gradio as gr | |
| from ...auth.auth import authenticate_user | |
| def create_login_view(): | |
| """Crea la vista de login""" | |
| with gr.Blocks() as view: | |
| username = gr.Textbox(label="Usuario") | |
| password = gr.Textbox(label="Contraseña", type="password") | |
| message = gr.Markdown() | |
| login_button = gr.Button("Iniciar Sesión", variant="primary") | |
| # Asignar los componentes al view para acceso externo | |
| view.username = username | |
| view.role = gr.State("") # Para almacenar el rol después del login | |
| def handle_login(user, pwd): | |
| success, role = authenticate_user(user, pwd) | |
| if success: | |
| view.role.value = role | |
| return user, role, "" | |
| return None, None, "Credenciales incorrectas" | |
| login_button.click( | |
| fn=handle_login, | |
| inputs=[username, password], | |
| outputs=[username, view.role, message] | |
| ) | |
| return view, login_button |