Download streamlit_app/auth.py from dashgaming/slyte: direct link, hf CLI and curl.
- Browser
- Download file 1.65 kB
-
https://huggingface.co/dashgaming/slyte/resolve/main/streamlit_app/auth.py
- Command line
-
hf download hf://dashgaming/slyte/streamlit_app/auth.py
-
curl -L -o auth.py https://huggingface.co/dashgaming/slyte/resolve/main/streamlit_app/auth.py
1.65 kB
| import streamlit as st | |
| from firebase_admin import auth | |
| def verify_user_from_query(): | |
| """ | |
| Retrieves Firebase ID token from URL parameter 'token', | |
| verifies it with Firebase Admin SDK, and stores UID in session state. | |
| Returns: | |
| uid (str): The verified User ID. | |
| If token is missing or invalid, stops execution. | |
| """ | |
| # 1. Get token from URL query parameters | |
| # Note: query_params might return a list if multiple tokens are present, usually not the case. | |
| # In newer Streamlit versions, st.query_params acts like a dict. | |
| # We'll use .get() which returns the value string or None. | |
| print(f"DEBUG: ALL Query Params: {st.query_params}") | |
| token = st.query_params.get("token") | |
| print(f"DEBUG: Retrieved Token: {token}") | |
| if not token: | |
| st.warning("Please login first.") | |
| # Stop execution so the rest of the app doesn't run | |
| st.stop() | |
| try: | |
| # 2. Verify the ID token | |
| decoded_token = auth.verify_id_token(token) | |
| uid = decoded_token['uid'] | |
| # 3. Store UID in session state | |
| st.session_state["uid"] = uid | |
| return uid | |
| except auth.ExpiredIdTokenError: | |
| st.error("Session expired. Please login again.") | |
| st.stop() | |
| except auth.InvalidIdTokenError: | |
| st.error("Invalid token. Please login again.") | |
| st.stop() | |
| except Exception as e: | |
| # Catch other errors (e.g., network issues, malformed token) | |
| st.error(f"Authentication error: {str(e)}") | |
| st.stop() | |