Spaces:
Sleeping
Sleeping
import streamlit as st | |
import hmac | |
# Standard imports | |
import numpy as np | |
import pandas as pd | |
from datetime import datetime | |
import os | |
import random | |
# Import torch | |
import torch | |
# Data visualization | |
import matplotlib.pyplot as plt | |
import seaborn as sns | |
# Path manipulation | |
from pathlib import Path | |
import sys | |
# Custom and other imports | |
import project_config | |
from utils import add_logo | |
from menu import menu | |
# Insert logo | |
# add_logo(project_config.MEDIA_DIR / 'gravity_logo.png') | |
# Initialize st.session_state.role to None | |
if "role" not in st.session_state: | |
st.session_state.role = None | |
# # Retrieve the role from Session State to initialize the widget | |
# st.session_state._role = st.session_state.role | |
# def set_role(): | |
# # Callback function to save the role selection to Session State | |
# st.session_state.role = st.session_state._role | |
def check_password(): | |
"""Returns `True` if the user had a correct password.""" | |
def login_form(): | |
"""Form with widgets to collect user information""" | |
with st.form("Credentials"): | |
st.text_input("Username", key="username") | |
st.text_input("Password", type="password", key="password") | |
st.form_submit_button("Log In", on_click=password_entered) | |
def password_entered(): | |
"""Checks whether a password entered by the user is correct.""" | |
if st.session_state["username"] in st.secrets[ | |
"passwords" | |
] and hmac.compare_digest( | |
st.session_state["password"], | |
st.secrets.passwords[st.session_state["username"]], | |
): | |
st.session_state["password_correct"] = True | |
# Retrieve user name | |
if st.session_state["username"] in st.secrets["users"]: | |
st.session_state["name"] = st.secrets["users"][st.session_state["username"]] | |
else: | |
st.session_state["name"] = st.session_state["username"] | |
# Check if the username is an admin | |
if st.session_state["username"] in st.secrets["admins"]['admins']: | |
st.session_state["role"] = "admin" | |
else: | |
st.session_state["role"] = "user" | |
# Check if username is in a team | |
if st.session_state["username"] in st.secrets["teams"]: | |
st.session_state["team"] = st.secrets["teams"][st.session_state["username"]] | |
else: | |
st.session_state["team"] = None | |
# Don't store the username or password | |
del st.session_state["password"] | |
# del st.session_state["username"] | |
else: | |
st.session_state["password_correct"] = False | |
# Return True if the username + password is validated | |
if st.session_state.get("password_correct", False): | |
return True | |
# Show inputs for username + password | |
login_form() | |
if "password_correct" in st.session_state: | |
st.error("π User not known or password incorrect.") | |
return False | |
# # Selectbox to choose role | |
# st.selectbox( | |
# "Select your role:", | |
# [None, "user", "admin", "super-admin"], | |
# key="_role", | |
# on_change=set_role, | |
# ) | |
menu() # Render the dynamic menu! | |
if not check_password(): | |
st.stop() |