File size: 2,329 Bytes
b63cfbd 3438a57 ea1047e 9fdc696 adbd0fb 3438a57 4502c21 3438a57 9fdc696 3438a57 adbd0fb 3438a57 ce6baa6 1760e7b 3438a57 76cf390 f5b2f2d 76cf390 744400c 3438a57 feaff94 3438a57 adbd0fb 5761e08 3438a57 9ef5659 3438a57 005bb6b 3438a57 9ef5659 63ab97b 9ef5659 |
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 87 88 89 90 91 92 |
import streamlit as st
from streamlit_option_menu import option_menu
import json
from Home import dashboard
import pymongo
from dotenv import load_dotenv
import os
import re
load_dotenv()
from pymongo.mongo_client import MongoClient
uri = os.environ["MONGO_CONNECTION_STRING"]
# Create a new client and connect to the server
client = MongoClient(uri)
db = client["Cosmo"]
col = db["Users"]
# Send a ping to confirm a successful connection
try:
client.admin.command('ping')
print("Pinged your deployment. You successfully connected to MongoDB!")
except Exception as e:
print(e)
def validate_email(email):
"""Validates the format of an email address."""
email_regex = r"[a-zA-Z0-9.+_-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
if not re.match(email_regex, email):
return False
return True
def login():
st.write("Login")
if username := st.text_input("Email"):
if validate_email(username):
st.success("The email address is valid.")
else:
st.error("The email address is not valid.")
password = st.text_input("Password", type="password")
if st.button("Login"):
document = col.find_one({"Username": username})
if document:
if password == document["Password"]:
st.session_state.user = username
st.experimental_rerun()
else:
st.error("Incorrect Password")
else:
st.error("Incorrect Email")
def register():
st.write("Register")
username = st.text_input("Email")
if validate_email(username):
st.success("The email address is valid.")
else:
st.error("The email address is not valid.")
password = st.text_input("Password", type="password")
data = {
"Username": username,
"Password": password
}
if st.button("Register"):
col.insert_one(data)
st.success("User created!")
def main():
if 'user' not in st.session_state:
st.session_state.user = None
if st.session_state.user is None:
with st.sidebar:
selected = option_menu(None, ['Login', 'Register'])
if selected == 'Login':
login()
elif selected == 'Register':
register()
else:
dashboard()
main() |