Правик

This commit is contained in:
Raykov-MS 2026-06-04 16:27:02 +03:00
parent 488b574366
commit 2d31aa1f66
4 changed files with 41 additions and 0 deletions

View File

@ -27,6 +27,14 @@ app/
- `OPENBAO__SETTINGS__LOCATION=local` -> локальный mock вход через форму. - `OPENBAO__SETTINGS__LOCATION=local` -> локальный mock вход через форму.
- `OPENBAO__SETTINGS__LOCATION=prod` (или пусто) -> вход через `raisa_streamlit_oauth`. - `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 ```bash

View File

@ -3,6 +3,21 @@ from __future__ import annotations
import os import os
SETTINGS_PREFIX = "OPENBAO__SETTINGS__" 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: def get_setting(name: str) -> str:
@ -15,3 +30,14 @@ def get_setting(name: str) -> str:
def get_location() -> str: def get_location() -> str:
return get_setting("LOCATION").lower() or "prod" 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

View File

@ -1,10 +1,15 @@
import streamlit as st import streamlit as st
from dotenv import load_dotenv
from app.auth.service import AuthService, clear_session 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 from app.ui import render_env_check, render_profile
def main() -> None: def main() -> None:
load_dotenv()
apply_raisa_env_aliases()
st.set_page_config(page_title="SFM Streamlit", page_icon=":lock:", layout="wide") st.set_page_config(page_title="SFM Streamlit", page_icon=":lock:", layout="wide")
st.title("SFM Streamlit: Keycloak-only auth") st.title("SFM Streamlit: Keycloak-only auth")
render_env_check() render_env_check()

View File

@ -1,2 +1,4 @@
streamlit==1.46.1 streamlit==1.46.1
raisa-streamlit-oauth==1.0.3
python-dotenv==1.0.1
ruff==0.5.2 ruff==0.5.2