import gradio as gr import os # Arquivo para armazenar os dados de login ARQUIVO_USUARIOS = "usuarios.txt" # Verifica se o arquivo existe, caso contrário, cria um vazio if not os.path.exists(ARQUIVO_USUARIOS): with open(ARQUIVO_USUARIOS, "w") as f: pass # Função para registrar novo usuário def registrar_usuario(nome, senha): with open(ARQUIVO_USUARIOS, "a") as f: f.write(f"{nome}:{senha}\n") return f"Usuário '{nome}' registrado com sucesso!" # Função para autenticar usuário def autenticar_usuario(nome, senha): with open(ARQUIVO_USUARIOS, "r") as f: usuarios = f.readlines() for usuario in usuarios: user, password = usuario.strip().split(":") if user == nome and password == senha: return True return False # Função para lidar com login ou registro def login(nome, senha, novo_usuario): if novo_usuario: return registrar_usuario(nome, senha), nome else: if autenticar_usuario(nome, senha): return f"Login bem-sucedido! Bem-vindo, {nome}!", nome else: return "Falha no login. Verifique seu nome de usuário e senha ou registre-se.", "" # Função principal do chatbot def chatbot_response(message, usuario_id): if usuario_id.strip() == "": return "Por favor, faça login para acessar o chatbot." return f"Chatbot funcionando para o usuário: {usuario_id}\nSua mensagem foi: {message}" # Função para reiniciar o fluxo def reiniciar_fluxo(): return "Fluxo reiniciado! Faça login para começar novamente.", "" # Interface Gradio with gr.Blocks() as demo: with gr.Row(): gr.Markdown("## Login ou Registro") with gr.Row(): login_nome = gr.Textbox(label="Nome de Usuário", placeholder="Digite seu nome", interactive=True) with gr.Row(): login_senha = gr.Textbox(label="Senha", placeholder="Digite sua senha", type="password", interactive=True) with gr.Row(): login_button = gr.Button("Login") registro_button = gr.Button("Registrar") login_output = gr.Textbox(label="Resultado") usuario_logado = gr.Textbox(label="Usuário Logado", interactive=False) with gr.Row(): gr.Markdown("## Chatbot") input_message = gr.Textbox(label="Digite sua mensagem:", placeholder="Digite sua pergunta", lines=1, interactive=True) chatbot_output = gr.Textbox(label="Resposta do Chatbot", interactive=False) with gr.Row(): send_button = gr.Button("Enviar") reset_button = gr.Button("Reiniciar Fluxo") # Botões de login e registro login_button.click( login, inputs=[login_nome, login_senha, gr.State(False)], outputs=[login_output, usuario_logado] ) registro_button.click( login, inputs=[login_nome, login_senha, gr.State(True)], outputs=[login_output, usuario_logado] ) send_button.click( chatbot_response, inputs=[input_message, usuario_logado], outputs=chatbot_output ) reset_button.click( reiniciar_fluxo, inputs=None, outputs=[chatbot_output, usuario_logado] ) # Executar demo.launch()