|
import streamlit as st |
|
import os |
|
import requests |
|
import os |
|
import json |
|
|
|
|
|
|
|
|
|
def initialize_login(): |
|
if "login" not in st.session_state: |
|
st.columns(3)[1].image("assets/logo.png") |
|
username = st.text_input("Username") |
|
password = st.text_input("Password", type="password") |
|
|
|
if st.button("Login"): |
|
authorized = authenticate(username, password) |
|
if authorized["status"]: |
|
st.session_state["login"] = authorized |
|
os.makedirs( |
|
os.path.join(".sessions", st.session_state["login"]["username"]), |
|
exist_ok=True, |
|
) |
|
st.success("Login Successful!") |
|
st.experimental_rerun() |
|
else: |
|
st.error("Invalid username or password") |
|
else: |
|
st.sidebar.success(f'Hello, {st.session_state["login"]["Name"]}!') |
|
st.sidebar.image("assets/logo.png", use_column_width=True) |
|
|
|
|
|
def authenticate(username, password): |
|
FIREBASE_WEB_API_KEY = os.environ.get("FIREBASE_WEB_API_KEY") |
|
payload = json.dumps( |
|
{ |
|
"email": f"{username}@aieye.com", |
|
"password": password, |
|
"returnSecureToken": False, |
|
} |
|
) |
|
|
|
rest_api_url = ( |
|
f"https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword" |
|
) |
|
r = requests.post(rest_api_url, params={"key": FIREBASE_WEB_API_KEY}, data=payload) |
|
print(r.json()) |
|
|
|
if r.status_code == 200: |
|
return { |
|
"status": True, |
|
"Name": " ".join(username.split("_")), |
|
"username": username, |
|
} |
|
else: |
|
return {"status": False} |
|
|
|
|
|
def get_login(): |
|
return st.session_state.get("login", {"status": False}) |
|
|