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'