From dc952e92c87ef896f691c97cf06ae86d0c15d578 Mon Sep 17 00:00:00 2001 From: Miwory Date: Thu, 9 Apr 2026 18:41:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=B0=D0=B2=D1=82=D0=BE=D1=80=D0=B8=D0=B7=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=BC=D0=B0?= =?UTF-8?q?=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyproject.toml | 2 +- src/apps/esia/sign.py | 12 +++++++++--- src/apps/esia/v1/router.py | 5 +++-- src/core/config.py | 2 ++ 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a684b1e..4e82454 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "HospitalAssistantBackend" -version = "1.0.3" +version = "1.1.0" description = "Backend for Hospital Assistant" readme = "README.md" requires-python = ">=3.13,<3.14" diff --git a/src/apps/esia/sign.py b/src/apps/esia/sign.py index e50ee61..fd63504 100644 --- a/src/apps/esia/sign.py +++ b/src/apps/esia/sign.py @@ -5,7 +5,7 @@ import tempfile import uuid from datetime import UTC, datetime from pathlib import Path -from typing import Any +from typing import Any, Literal from urllib.parse import urlencode from apps.esia.scopes import SCOPES @@ -62,13 +62,19 @@ def sign_params(params: dict[str, Any]): return base64.urlsafe_b64encode(client_secret).decode('utf-8') -def get_url(): +def get_url(platform: Literal['max', 'app']): timestamp = datetime.now(UTC).strftime('%Y.%m.%d %H:%M:%S %z').strip() state = str(uuid.uuid4()) + redirect_uri = ( + settings.ESIA_REDIRECT_URI + if platform == 'app' + else settings.ESIA_MAX_REDIRECT_URI + ) + params = { 'client_id': settings.ESIA_CLIENT_ID, 'client_secret': '', - 'redirect_uri': settings.ESIA_REDIRECT_URI, + 'redirect_uri': redirect_uri, 'response_type': RESPONSE_CODE, 'state': state, 'timestamp': timestamp, diff --git a/src/apps/esia/v1/router.py b/src/apps/esia/v1/router.py index 3eb2e07..7b62ea4 100644 --- a/src/apps/esia/v1/router.py +++ b/src/apps/esia/v1/router.py @@ -1,5 +1,6 @@ import secrets from logging import getLogger +from typing import Literal from fastapi import APIRouter from sqlmodel import select @@ -23,8 +24,8 @@ router = APIRouter( @router.get('/login', response_model=s.LoginURL) -async def login(): - url = get_url() +async def login(platform: Literal['max', 'app'] = 'app'): + url = get_url(platform) return s.LoginURL(url=url) diff --git a/src/core/config.py b/src/core/config.py index 55a289b..dac6c88 100644 --- a/src/core/config.py +++ b/src/core/config.py @@ -49,6 +49,8 @@ class Settings(BaseSettings): ESIA_CONTAINER_THUMBPRINT: str = Field(default='') ESIA_PROXY: str | None = Field(default=None) + ESIA_MAX_REDIRECT_URI: str = Field(default='') + # Vitacore VITACORE_BASE_URL: str = Field( default='https://gist-cws.ezdrav.ru:8899/MP_API'