Spaces:
Sleeping
Sleeping
| 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() | |