diff --git a/auth/oauth.py b/auth/oauth.py index 055bbb3d..e4e5da89 100644 --- a/auth/oauth.py +++ b/auth/oauth.py @@ -921,7 +921,12 @@ async def oauth_callback_http(request: Request) -> JSONResponse | RedirectRespon redirect_uri = FRONTEND_URL # 🎯 Стандартный OAuth flow: токен в URL для фронтенда - from urllib.parse import parse_qs, urlencode, urlparse, urlunparse + from urllib.parse import parse_qs, unquote, urlencode, urlparse, urlunparse + + # 🔧 Декодируем redirect_uri если он URL-encoded + if "%3A" in redirect_uri or "%2F" in redirect_uri: + redirect_uri = unquote(redirect_uri) + logger.info(f"🔧 Decoded redirect_uri: {redirect_uri}") parsed_url = urlparse(redirect_uri) diff --git a/utils/logger.py b/utils/logger.py index 989bd6f5..c5294aa5 100644 --- a/utils/logger.py +++ b/utils/logger.py @@ -95,41 +95,11 @@ def console_filter(record: logging.LogRecord) -> bool: for phrase in [ "Требуется авторизация", "AuthorizationError", - "GraphQL request:", - "Traceback (most recent call last):", "graphql.error.graphql_error.GraphQLError: Требуется авторизация", - "load_drafts", - "GetUserDocuments", - "GetDrafts", - "During handling of the above exception", - 'File "/usr/local/lib/python3.13/site-packages/graphql/execution/execute.py"', - 'File "/app/services/auth.py"', - "await_result", - "handle_field_error", - "await gather", - "get_results", - "raise error", - "return_type, field_nodes, info, path, await result", - 'raise AuthorizationError("Требуется авторизация")', - "decorated_function", ] ): return False # Не показываем в консоли ошибки авторизации - # Подавляем повторяющиеся Ariadne логи в консоли - if record.name in ["ariadne", "graphql"]: - message = record.getMessage() - if any( - phrase in message - for phrase in [ - "Требуется авторизация", - "AuthorizationError", - "load_drafts", - "GraphQL request:", - ] - ): - return False - return True @@ -276,24 +246,7 @@ class AriadneAuthFilter(logging.Filter): def filter(self, record: logging.LogRecord) -> bool: message = record.getMessage() # Полностью блокируем логи связанные с авторизацией в Ariadne - return not any( - phrase in message - for phrase in [ - "Требуется авторизация", - "AuthorizationError", - "GraphQL request:", - "decorated_function", - "load_drafts", - "GetUserDocuments", - "GetDrafts", - "Traceback", - "await gather", - "handle_field_error", - "await_result", - "During handling", - "raise error", - ] - ) + return not any(phrase in message for phrase in ["Требуется авторизация", "AuthorizationError"]) # Применяем фильтр к Ariadne и GraphQL логгерам