diff --git a/README.md b/README.md index 890bd27..25b6b56 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,14 @@ app/ - `OPENBAO__SETTINGS__LOCATION=local` -> локальный mock вход через форму. - `OPENBAO__SETTINGS__LOCATION=prod` (или пусто) -> вход через `raisa_streamlit_oauth`. +## Важно по raisa-streamlit-oauth + +- Используется версия `raisa-streamlit-oauth==1.0.3`. +- До старта приложения выполняется `load_dotenv()`. +- Переменные `OPENBAO__SETTINGS__*` автоматически маппятся в обычные + (`AUTHORIZE_URL`, `TOKEN_URL`, `APP_NAMESPACE` и т.д.), чтобы библиотека + работала по каноничному шаблону из документации. + ## Быстрый старт ```bash diff --git a/app/config.py b/app/config.py index 88d4358..464e523 100644 --- a/app/config.py +++ b/app/config.py @@ -3,6 +3,21 @@ from __future__ import annotations import os SETTINGS_PREFIX = "OPENBAO__SETTINGS__" +RAISA_ENV_KEYS = ( + "AUTHORIZE_URL", + "TOKEN_URL", + "REFRESH_TOKEN_URL", + "LOGOUT_URL", + "JWKS_URL", + "CLIENT_ID", + "CLIENT_SECRET", + "REDIRECT_URI", + "SCOPE", + "APP_ID", + "APP_NAMESPACE", + "APP_NAME", + "LOCATION", +) def get_setting(name: str) -> str: @@ -15,3 +30,14 @@ def get_setting(name: str) -> str: def get_location() -> str: return get_setting("LOCATION").lower() or "prod" + +def apply_raisa_env_aliases() -> None: + """ + Заполняет обычные имена переменных из OPENBAO__SETTINGS__, + чтобы raisa_streamlit_oauth работал одинаково в локальном и raisa runtime. + """ + for key in RAISA_ENV_KEYS: + prefixed = os.getenv(f"{SETTINGS_PREFIX}{key}", "").strip() + if prefixed and not os.getenv(key): + os.environ[key] = prefixed + diff --git a/main.py b/main.py index 5f46070..8c827b4 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,15 @@ import streamlit as st +from dotenv import load_dotenv from app.auth.service import AuthService, clear_session +from app.config import apply_raisa_env_aliases from app.ui import render_env_check, render_profile def main() -> None: + load_dotenv() + apply_raisa_env_aliases() + st.set_page_config(page_title="SFM Streamlit", page_icon=":lock:", layout="wide") st.title("SFM Streamlit: Keycloak-only auth") render_env_check() diff --git a/requirements.txt b/requirements.txt index d751c80..1203623 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,4 @@ streamlit==1.46.1 +raisa-streamlit-oauth==1.0.3 +python-dotenv==1.0.1 ruff==0.5.2