This commit is contained in:
@@ -486,10 +486,34 @@ async def oauth_callback(request: Any) -> JSONResponse | RedirectResponse:
|
||||
if not isinstance(redirect_uri, str) or not redirect_uri:
|
||||
redirect_uri = FRONTEND_URL
|
||||
|
||||
# Создаем ответ с редиректом
|
||||
response = RedirectResponse(url=str(redirect_uri))
|
||||
# 🔧 Передаем JWT токен через URL параметры вместо cookie
|
||||
from urllib.parse import parse_qs, urlencode, urlparse, urlunparse
|
||||
|
||||
# Устанавливаем cookie с сессией
|
||||
parsed_url = urlparse(redirect_uri)
|
||||
query_params = parse_qs(parsed_url.query)
|
||||
|
||||
# Добавляем access_token и state в URL параметры
|
||||
query_params['access_token'] = [session_token]
|
||||
if state:
|
||||
query_params['state'] = [state]
|
||||
|
||||
# Собираем новый URL с параметрами
|
||||
new_query = urlencode(query_params, doseq=True)
|
||||
final_redirect_url = urlunparse((
|
||||
parsed_url.scheme,
|
||||
parsed_url.netloc,
|
||||
parsed_url.path,
|
||||
parsed_url.params,
|
||||
new_query,
|
||||
parsed_url.fragment
|
||||
))
|
||||
|
||||
logger.info(f"🔗 OAuth redirect URL: {final_redirect_url}")
|
||||
|
||||
# Создаем ответ с редиректом
|
||||
response = RedirectResponse(url=final_redirect_url)
|
||||
|
||||
# 🍪 Оставляем cookie для обратной совместимости (опционально)
|
||||
response.set_cookie(
|
||||
SESSION_COOKIE_NAME,
|
||||
session_token,
|
||||
@@ -679,8 +703,33 @@ async def oauth_callback_http(request: Request) -> JSONResponse | RedirectRespon
|
||||
if not isinstance(redirect_uri, str) or not redirect_uri:
|
||||
redirect_uri = FRONTEND_URL
|
||||
|
||||
# Возвращаем redirect с cookie
|
||||
response = RedirectResponse(url=str(redirect_uri), status_code=307)
|
||||
# 🔧 Передаем JWT токен через URL параметры вместо cookie
|
||||
from urllib.parse import parse_qs, urlencode, urlparse, urlunparse
|
||||
|
||||
parsed_url = urlparse(redirect_uri)
|
||||
query_params = parse_qs(parsed_url.query)
|
||||
|
||||
# Добавляем access_token и state в URL параметры
|
||||
query_params['access_token'] = [session_token]
|
||||
query_params['state'] = [state]
|
||||
|
||||
# Собираем новый URL с параметрами
|
||||
new_query = urlencode(query_params, doseq=True)
|
||||
final_redirect_url = urlunparse((
|
||||
parsed_url.scheme,
|
||||
parsed_url.netloc,
|
||||
parsed_url.path,
|
||||
parsed_url.params,
|
||||
new_query,
|
||||
parsed_url.fragment
|
||||
))
|
||||
|
||||
logger.info(f"🔗 OAuth redirect URL: {final_redirect_url}")
|
||||
|
||||
# Возвращаем redirect с токеном в URL
|
||||
response = RedirectResponse(url=final_redirect_url, status_code=307)
|
||||
|
||||
# 🍪 Оставляем cookie для обратной совместимости (опционально)
|
||||
response.set_cookie(
|
||||
SESSION_COOKIE_NAME,
|
||||
session_token,
|
||||
|
||||
Reference in New Issue
Block a user