caissaa23 commited on
Commit
c42052b
·
verified ·
1 Parent(s): 3fb3582

Update login.py

Browse files
Files changed (1) hide show
  1. login.py +42 -28
login.py CHANGED
@@ -1,11 +1,11 @@
1
  import gradio as gr
2
  import json
3
  import os
4
- import subprocess
5
 
6
  USUARIOS_FILE = "usuarios.json"
 
7
 
8
- # ---------------- FUNCIONES BÁSICAS ---------------- #
9
 
10
  def cargar_usuarios():
11
  if os.path.exists(USUARIOS_FILE):
@@ -17,13 +17,24 @@ def guardar_usuarios(data):
17
  with open(USUARIOS_FILE, "w") as f:
18
  json.dump(data, f, indent=4)
19
 
 
 
 
 
 
 
 
 
 
 
20
  def registrar_usuario(nombre, email, password):
21
  usuarios = cargar_usuarios()
22
  if email in usuarios:
23
  return "⚠️ Ya existe una cuenta con ese correo."
24
  usuarios[email] = {"nombre": nombre, "password": password}
25
  guardar_usuarios(usuarios)
26
- return "✅ Registro exitoso. ¡Ahora puedes iniciar sesión!"
 
27
 
28
  def iniciar_sesion(email, password):
29
  usuarios = cargar_usuarios()
@@ -31,14 +42,13 @@ def iniciar_sesion(email, password):
31
  return "❌ Usuario no encontrado."
32
  if usuarios[email]["password"] != password:
33
  return "🔐 Contraseña incorrecta."
34
- with open("sesion.json", "w") as f:
35
- json.dump({"usuario": email}, f)
36
- return f"✅ Bienvenido de nuevo, {usuarios[email]['nombre']}! Redirigiendo a NutriBot..."
37
 
38
- def lanzar_app():
39
- # Ejecuta la app principal (app.py)
40
- subprocess.Popen(["python", "app.py"])
41
- return "🚀 NutriBot se está iniciando..."
42
 
43
  # ---------------- INTERFAZ GRADIO ---------------- #
44
 
@@ -50,24 +60,28 @@ with gr.Blocks(title="NutriBot - Inicio de Sesión") as login_app:
50
  ---
51
  """)
52
 
53
- with gr.Tab("🔑 Iniciar sesión"):
54
- email_login = gr.Textbox(label="Correo electrónico")
55
- pass_login = gr.Textbox(label="Contraseña", type="password")
56
- btn_login = gr.Button("Entrar")
57
- salida_login = gr.Textbox(label="Mensaje")
58
- btn_login.click(iniciar_sesion, inputs=[email_login, pass_login], outputs=salida_login)
59
-
60
- # Al iniciar sesión, se lanza NutriBot
61
- btn_continuar = gr.Button("Abrir NutriBot")
62
- salida_continuar = gr.Textbox(label="Estado")
63
- btn_continuar.click(lanzar_app, outputs=salida_continuar)
 
 
 
 
64
 
65
- with gr.Tab("📝 Registrarse"):
66
- nombre_reg = gr.Textbox(label="Nombre completo")
67
- email_reg = gr.Textbox(label="Correo electrónico")
68
- pass_reg = gr.Textbox(label="Contraseña", type="password")
69
- btn_reg = gr.Button("Crear cuenta")
70
- salida_reg = gr.Textbox(label="Resultado del registro")
71
- btn_reg.click(registrar_usuario, inputs=[nombre_reg, email_reg, pass_reg], outputs=salida_reg)
72
 
73
  login_app.launch()
 
1
  import gradio as gr
2
  import json
3
  import os
 
4
 
5
  USUARIOS_FILE = "usuarios.json"
6
+ SESION_FILE = "sesion.json"
7
 
8
+ # ---------------- FUNCIONES ---------------- #
9
 
10
  def cargar_usuarios():
11
  if os.path.exists(USUARIOS_FILE):
 
17
  with open(USUARIOS_FILE, "w") as f:
18
  json.dump(data, f, indent=4)
19
 
20
+ def cargar_sesion():
21
+ if os.path.exists(SESION_FILE):
22
+ with open(SESION_FILE, "r") as f:
23
+ return json.load(f)
24
+ return {}
25
+
26
+ def guardar_sesion(usuario):
27
+ with open(SESION_FILE, "w") as f:
28
+ json.dump({"usuario": usuario}, f)
29
+
30
  def registrar_usuario(nombre, email, password):
31
  usuarios = cargar_usuarios()
32
  if email in usuarios:
33
  return "⚠️ Ya existe una cuenta con ese correo."
34
  usuarios[email] = {"nombre": nombre, "password": password}
35
  guardar_usuarios(usuarios)
36
+ guardar_sesion(email) # inicia sesión automáticamente al registrarse
37
+ return "✅ Registro exitoso. ¡Ahora estás logueado!"
38
 
39
  def iniciar_sesion(email, password):
40
  usuarios = cargar_usuarios()
 
42
  return "❌ Usuario no encontrado."
43
  if usuarios[email]["password"] != password:
44
  return "🔐 Contraseña incorrecta."
45
+ guardar_sesion(email)
46
+ return f" Bienvenido de nuevo, {usuarios[email]['nombre']}!"
 
47
 
48
+ def cerrar_sesion():
49
+ if os.path.exists(SESION_FILE):
50
+ os.remove(SESION_FILE)
51
+ return "🔒 Has cerrado sesión."
52
 
53
  # ---------------- INTERFAZ GRADIO ---------------- #
54
 
 
60
  ---
61
  """)
62
 
63
+ sesion_actual = cargar_sesion()
64
+ if sesion_actual:
65
+ gr.Markdown(f"👋 Hola, **{sesion_actual['usuario']}**. Ya estás logueado.")
66
+ btn_logout = gr.Button("Cerrar sesión")
67
+ salida_logout = gr.Textbox(label="Estado")
68
+ btn_logout.click(cerrar_sesion, outputs=salida_logout)
69
+ # Aquí podrías redirigir directamente a app.py
70
+ # import app
71
+ else:
72
+ with gr.Tab("🔑 Iniciar sesión"):
73
+ email_login = gr.Textbox(label="Correo electrónico")
74
+ pass_login = gr.Textbox(label="Contraseña", type="password")
75
+ btn_login = gr.Button("Entrar")
76
+ salida_login = gr.Textbox(label="Mensaje")
77
+ btn_login.click(iniciar_sesion, inputs=[email_login, pass_login], outputs=salida_login)
78
 
79
+ with gr.Tab("📝 Registrarse"):
80
+ nombre_reg = gr.Textbox(label="Nombre completo")
81
+ email_reg = gr.Textbox(label="Correo electrónico")
82
+ pass_reg = gr.Textbox(label="Contraseña", type="password")
83
+ btn_reg = gr.Button("Crear cuenta")
84
+ salida_reg = gr.Textbox(label="Resultado del registro")
85
+ btn_reg.click(registrar_usuario, inputs=[nombre_reg, email_reg, pass_reg], outputs=salida_reg)
86
 
87
  login_app.launch()