File size: 3,118 Bytes
119384b
1e59a89
119384b
1e59a89
 
119384b
1e59a89
 
 
 
119384b
1e59a89
 
 
 
 
119384b
1e59a89
 
 
 
 
 
 
 
 
119384b
1e59a89
 
 
 
 
 
 
 
 
119384b
1e59a89
 
 
 
 
119384b
1e59a89
 
 
119384b
1e59a89
 
 
 
 
 
 
 
 
 
 
 
 
119384b
1e59a89
 
 
 
 
 
 
119384b
1e59a89
 
 
 
 
 
 
 
 
 
 
 
 
119384b
1e59a89
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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()