Is there a way to hide my login screen after the user authenticates?
This is my code at the moment:
import streamlit as st
import pandas as pd
import hashlib
import funcoes
Security
def make_hashes(password):
return hashlib.sha256(str.encode(password)).hexdigest()
def check_hashes(password,hashed_text):
if make_hashes(password) == hashed_text:
return hashed_text
return False
#DB Management
import sqlite3
conn = sqlite3.connect(‘data.db’)
c = conn.cursor()
DB Functions
def create_usertable():
c.execute(‘CREATE TABLE IF NOT EXISTS userstable(username TEXT,password TEXT)’)
def add_userdata(username,password):
c.execute(‘INSERT INTO userstable(username,password) VALUES (?,?)’,(username,password))
conn.commit()
def login_user(username,password):
c.execute(‘SELECT * FROM userstable WHERE username =? AND password = ?’,(username,password))
data = c.fetchall()
return data
def view_all_users():
c.execute(‘SELECT * FROM userstable’)
data = c.fetchall()
return data
#Main Function
def main():
st.title("-Sistema Engenharia Field-")
menu = ["Login","SignUp","Data"]
choice = st.sidebar.selectbox("Menu",menu)
if choice == "Login": #Login Screen
st.subheader("Login Section")
username = st.text_input("User Name")
password = st.text_input("Password",type='password')
if st.checkbox("Login"):
create_usertable()
hashed_pswd = make_hashes(password)
result = login_user(username,check_hashes(password,hashed_pswd))
if result:
st.success("Logged In as {}".format(username))
#funcoes.test()
else:
st.warning("Incorrect Username/Password")
elif choice == "SignUp":
st.subheader("Create New Account")
new_user = st.text_input("Username")
new_password = st.text_input("Password",type='password')
if st.button("Signup"):
create_usertable()
add_userdata(new_user,make_hashes(new_password))
st.success("You have successfully created a valid Account")
st.info("Go to Login Menu to login")
if name == ‘main’:
main()