Spaces:
Running
Running
File size: 1,874 Bytes
3e30a68 0ca1e0b 3e30a68 7cf6c15 3e30a68 0ca1e0b 3e30a68 7cf6c15 3e30a68 |
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 |
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 is_token_in_session() -> bool:
return "token" in st.session_state
def get_authorization_button():
if not ENABLE_LOGIN:
return
# Check if token exists in session state
if not is_token_in_session():
# 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()
|