from __future__ import annotations import streamlit as st from .providers import build_auth_provider def clear_session() -> None: for key in list(st.session_state.keys()): del st.session_state[key] class AuthService: def run(self) -> bool: if "oauth_authenticated" not in st.session_state: st.session_state["oauth_authenticated"] = False if ( st.session_state.get("oauth_authenticated") and "user_profile" in st.session_state ): return True try: token_data = build_auth_provider().get_token_data() except ImportError: st.error( "Библиотека raisa_streamlit_oauth недоступна. " "Для локальной разработки установите LOCATION=local " "или OPENBAO__SETTINGS__LOCATION=local." ) return False if not token_data: return False email = token_data.get("email") if not email: st.error( "Не удалось идентифицировать пользователя: " "в токене отсутствует поле email." ) return False st.session_state["token_data"] = token_data st.session_state["user_profile"] = token_data st.session_state["oauth_authenticated"] = True return True