| | 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"] |
| |
|
| | |
| | client = MongoClient(uri) |
| |
|
| | db = client["Cosmo"] |
| |
|
| | col = db["Users"] |
| |
|
| | |
| | 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"): |
| | if username in col.find(): |
| | if password in col.find(): |
| | st.session_state.userr = username |
| | st.experimental_rerun() |
| | else: |
| | st.error("Incorrect password") |
| | |
| | |
| | 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() |