forked from phoenix/litellm-mirror
45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
"""
|
|
Auth in user, to proxy ui.
|
|
|
|
Uses supabase passwordless auth: https://supabase.com/docs/reference/python/auth-signinwithotp
|
|
|
|
Remember to set your redirect url to 8501 (streamlit default).
|
|
"""
|
|
import streamlit as st
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
import os
|
|
from supabase import create_client, Client
|
|
|
|
# Set up Supabase client
|
|
url: str = os.environ.get("SUPABASE_URL")
|
|
key: str = os.environ.get("SUPABASE_KEY")
|
|
supabase: Client = create_client(url, key)
|
|
|
|
|
|
def sign_in_with_otp(email: str, page_param: str):
|
|
print(f"received page param: {page_param}")
|
|
data = supabase.auth.sign_in_with_otp(
|
|
{"email": email, "options": {"data": {"page_param": page_param}}}
|
|
)
|
|
print(f"data: {data}")
|
|
# Redirect to Supabase UI with the return data
|
|
st.write(f"Please check your email for a login link!")
|
|
|
|
|
|
def verify_with_otp(token: str):
|
|
res = supabase.auth.verify_otp({"token_hash": token, "type": "email"})
|
|
return res
|
|
|
|
|
|
# Create the Streamlit app
|
|
def auth_page(page_param: str):
|
|
st.title("User Authentication")
|
|
|
|
# User email input
|
|
email = st.text_input("Enter your email")
|
|
|
|
# Sign in button
|
|
if st.button("Sign In"):
|
|
sign_in_with_otp(email, page_param=page_param)
|