auth-fix
All checks were successful
Deploy on push / deploy (push) Successful in 5m44s

This commit is contained in:
2025-09-30 19:20:41 +03:00
parent 9b284852e9
commit 3ae675c52c
2 changed files with 23 additions and 13 deletions

View File

@@ -27,11 +27,15 @@ from utils.logger import root_logger as logger
def resolve_roles(obj: dict | Any, info: GraphQLResolveInfo) -> list[str]:
"""Резолвер для поля roles автора"""
try:
# Если это ORM объект с методом get_roles
if hasattr(obj, "get_roles"):
return obj.get_roles()
# Если это словарь
if isinstance(obj, dict):
roles_data = obj.get("roles_data", {})
roles_data = obj.get("roles_data")
if roles_data is None:
return []
if isinstance(roles_data, list):
return roles_data
if isinstance(roles_data, dict):
@@ -122,9 +126,12 @@ async def login(_: None, info: GraphQLResolveInfo, **kwargs: Any) -> dict[str, A
domain=SESSION_COOKIE_DOMAIN,
)
logger.info(
f"✅ Admin login: httpOnly cookie установлен для пользователя {result.get('author', {}).get('id')}"
author_id = (
result.get("author", {}).get("id")
if isinstance(result.get("author"), dict)
else getattr(result.get("author"), "id", "unknown")
)
logger.info(f"✅ Admin login: httpOnly cookie установлен для пользователя {author_id}")
# Для админки НЕ возвращаем токен клиенту - он в httpOnly cookie
result_without_token = result.copy()
@@ -136,9 +143,12 @@ async def login(_: None, info: GraphQLResolveInfo, **kwargs: Any) -> dict[str, A
# Для основного сайта возвращаем токен как обычно (Bearer в localStorage)
if not is_admin_request:
logger.info(
f"✅ Main site login: токен возвращен для localStorage пользователя {result.get('author', {}).get('id')}"
author_id = (
result.get("author", {}).get("id")
if isinstance(result.get("author"), dict)
else getattr(result.get("author"), "id", "unknown")
)
logger.info(f"✅ Main site login: токен возвращен для localStorage пользователя {author_id}")
return result
except Exception as e: