YFDashboard / src /login_component.py
Jon Solow
Set login component based on environment variable defaulted false
0ca1e0b
raw
history blame
No virus
1.8 kB
import streamlit as st
from streamlit_oauth import OAuth2Component
import os
# # Load environment variables from .env file
# from dotenv import load_dotenv
# load_dotenv()
# Set environment variables
AUTHORIZE_URL = os.environ.get("AUTHORIZE_URL")
TOKEN_URL = os.environ.get("TOKEN_URL")
REFRESH_TOKEN_URL = os.environ.get("REFRESH_TOKEN_URL")
REVOKE_TOKEN_URL = os.environ.get("REVOKE_TOKEN_URL")
CLIENT_ID = os.environ.get("CLIENT_ID")
CLIENT_SECRET = os.environ.get("CLIENT_SECRET")
REDIRECT_URI = os.environ.get("REDIRECT_URI")
SCOPE = os.environ.get("SCOPE")
ENABLE_LOGIN = os.environ.get("ENABLE_LOGIN", False)
# Create OAuth2Component instance
oauth2 = OAuth2Component(CLIENT_ID, CLIENT_SECRET, AUTHORIZE_URL, TOKEN_URL, REFRESH_TOKEN_URL, REVOKE_TOKEN_URL)
def get_authorization_button():
if not ENABLE_LOGIN:
return
# Check if token exists in session state
if "token" not in st.session_state:
# If not, show authorize button
result = oauth2.authorize_button("Login", REDIRECT_URI, SCOPE)
if result and "token" in result:
# If authorization successful, save token in session state
st.session_state.token = result.get("token")
st.experimental_rerun()
else:
# # If token exists in session state, allow logout
st.session_state["token"]
if st.button("Logout"):
del st.session_state.token
st.experimental_rerun()
# # If token exists in session state, show the token
# token = st.session_state["token"]
# if st.button("Refresh Token"):
# # If refresh token button is clicked, refresh the token
# token = oauth2.refresh_token(token)
# st.session_state.token = token
# st.experimental_rerun()