Skip to content

Commit

Permalink
Update homepage.py
Browse files Browse the repository at this point in the history
  • Loading branch information
pmerlin13 authored Aug 25, 2024
1 parent 1bee742 commit 9776f09
Showing 1 changed file with 92 additions and 100 deletions.
192 changes: 92 additions & 100 deletions homepage.py
Original file line number Diff line number Diff line change
@@ -1,112 +1,104 @@
import pickle
from pathlib import Path
import streamlit_authenticator as stauth
import streamlit as st
import psycopg2

#---------- USER AUTHENTICATION

#Users
names = ["Merlin Pineda", "Maurelys Jaquez"]
usernames = ["Pineda","Mau"]

file_path = Path(__file__).parent / "hashed_pw.pkl"
with file_path.open("rb") as file:
hashed_passwords = pickle.load(file)

authenticator = stauth.Authenticate(names, usernames, hashed_passwords, "sales_dashboard", "abcdef")
authenticator.logout("Logout", "sidebar")
name, authentication_status, username = authenticator.login("Login", "main")

#Verifico authentication
if authentication_status == False:
st.error("Username/password is incorrect")
if authentication_status == None:
st.error("please enter your Username andpassword")
if authentication_status:
# Función para validar el inicio de sesión
from werkzeug.security import check_password_hash

# Cargar secretos desde Streamlit Secrets
db_user = st.secrets["database"]["user"]
db_password = st.secrets["database"]["password"]
db_host = st.secrets["database"]["host"]
db_port = st.secrets["database"]["port"]
db_name = st.secrets["database"]["name"]

# Función para conectar a la base de datos
def conectar_bd():
conn = psycopg2.connect(
user="admin",
password="admin",
host="localhost",
port="5432", # Replace with the actual port number
database="medicai"
user=db_user,
password=db_password,
host=db_host,
port=db_port,
database=db_name
)
return conn

# Función para verificar las credenciales del usuario
def verificar_credenciales(correo, contrasena):
conn = conectar_bd()
cursor = conn.cursor()

# Ejecutar una consulta SELECT
query = "SELECT * FROM user"
cursor.execute(query)

# Obtener los resultados de la consulta
results = cursor.fetchall()
for row in results:
print(row)
# Buscar el usuario por correo o nombre de usuario
cursor.execute("SELECT nombre, correo, password FROM users WHERE correo = %s", (correo,))
user = cursor.fetchone()

# Confirmar la transacción y cerrar la conexión
conn.commit()
conn.close()

def iniciar_sesion(correo, contrasena):
# Aquí puedes implementar tu lógica de validación de inicio de sesión
# Por simplicidad, este código solo verifica que se ingresen datos en ambos campos
if correo and contrasena:
return True
if user and check_password_hash(user[2], contrasena):
return user[0] # Retornar el nombre del usuario si la contraseña es correcta
else:
return None

# Página de inicio de sesión
def pagina_inicio_sesion():
st.title('Inicio de Sesión')
st.write('Por favor, ingresa tus credenciales para iniciar sesión.')

# Obtener los datos del usuario
correo = st.text_input('Correo o usuario')
contrasena = st.text_input('Contraseña', type='password')

# Botón de inicio de sesión
if st.button('Iniciar sesión'):
user_name = verificar_credenciales(correo, contrasena)
if user_name:
st.success(f'Inicio de sesión exitoso. Bienvenido, {user_name}!')
else:
return False

# Página de inicio de sesión
def pagina_inicio_sesion():
st.title('Inicio de Sesión')
st.write('Por favor, ingresa tus credenciales para iniciar sesión.')

# Obtener los datos del usuario
correo = st.text_input('Correo o usuario')
contrasena = st.text_input('Contraseña', type='password')

# Botón de inicio de sesión
if st.button('Iniciar sesión'):
if iniciar_sesion(correo, contrasena):
st.success('Inicio de sesión exitoso.')
else:
st.error('Usuario o contraseña inválidos.')

# Enlace para restablecer contraseña
st.write('¿Olvidaste tu contraseña?')
if st.button('Restablecer contraseña'):
# Aquí puedes implementar la lógica para enviar un código de restablecimiento de contraseña al correo del usuario
st.info('Se ha enviado un código de restablecimiento de contraseña a tu correo electrónico.')

# Página de registro
def pagina_registro():
st.title('Registro')
st.write('Por favor, completa los siguientes campos para crear una cuenta.')

# Obtener los datos del usuario
nombre = st.text_input('Nombre')
correo = st.text_input('Correo electrónico')
contrasena = st.text_input('Contraseña', type='password')

# Botón de registro
if st.button('Crear cuenta'):
# Aquí puedes implementar la lógica de registro de usuario
st.success('Cuenta creada exitosamente.')

# Página principal
def pagina_principal():
st.title('Sistema de Registro y Gestión')

# Opciones del menú
opcion = st.radio('Opción', ['Inicio de Sesión', 'Registro'])

# Procesar la opción seleccionada
if opcion == 'Inicio de Sesión':
pagina_inicio_sesion()
elif opcion == 'Registro':
pagina_registro()

# Ejecutar la aplicación
if __name__ == '__main__':
pagina_principal()
st.error('Usuario o contraseña inválidos.')

# Enlace para restablecer contraseña
st.write('¿Olvidaste tu contraseña?')
if st.button('Restablecer contraseña'):
# Implementar la lógica para enviar un código de restablecimiento de contraseña al correo del usuario
st.info('Se ha enviado un código de restablecimiento de contraseña a tu correo electrónico.')

# Página de registro
def pagina_registro():
st.title('Registro')
st.write('Por favor, completa los siguientes campos para crear una cuenta.')

# Obtener los datos del usuario
nombre = st.text_input('Nombre')
correo = st.text_input('Correo electrónico')
contrasena = st.text_input('Contraseña', type='password')

# Botón de registro
if st.button('Crear cuenta'):
conn = conectar_bd()
cursor = conn.cursor()
# Hashear la contraseña antes de guardarla
hashed_password = generate_password_hash(contrasena)

# Insertar el nuevo usuario en la base de datos
cursor.execute("INSERT INTO users (nombre, correo, password) VALUES (%s, %s, %s)",
(nombre, correo, hashed_password))
conn.commit()
conn.close()

st.success('Cuenta creada exitosamente.')

# Página principal
def pagina_principal():
st.title('Sistema de Registro y Gestión')

# Opciones del menú
opcion = st.radio('Opción', ['Inicio de Sesión', 'Registro'])

# Procesar la opción seleccionada
if opcion == 'Inicio de Sesión':
pagina_inicio_sesion()
elif opcion == 'Registro':
pagina_registro()

# Ejecutar la aplicación
if __name__ == '__main__':
pagina_principal()


0 comments on commit 9776f09

Please sign in to comment.