invites-fix
All checks were successful
Deploy on push / deploy (push) Successful in 6s

This commit is contained in:
Untone 2025-06-30 23:27:22 +03:00
parent b01de1fdc1
commit 5cfde98c22
3 changed files with 20 additions and 23 deletions

View File

@ -2,6 +2,10 @@
## [0.5.10] - 2025-06-30
### auth/internal fix
- Исправлена ошибка в функции `authenticate` в файле `auth/internal.py` - неправильное создание объекта `AuthState` и использование `TokenManager` вместо прямого создания `SessionTokenManager`
- Исправлена ошибка в функции `admin_get_invites` в файле `resolvers/admin.py` - добавлено значение по умолчанию для поля `slug` в объектах `Author`, чтобы избежать ошибки "Cannot return null for non-nullable field Author.slug"
### Новая функциональность CRUD приглашений
- **НОВОЕ**: Полноценное управление приглашениями в админ-панели:

View File

@ -99,52 +99,43 @@ async def authenticate(request) -> AuthState:
AuthState: Состояние аутентификации
"""
from auth.decorators import get_auth_token
from auth.tokens.sessions import SessionTokenManager
from utils.logger import root_logger as logger
logger.debug("[authenticate] Начало аутентификации")
# Создаем объект AuthState
auth_state = AuthState()
auth_state.logged_in = False
auth_state.author_id = None
auth_state.error = None
auth_state.token = None
# Получаем токен из запроса
token = get_auth_token(request)
if not token:
logger.warning("[authenticate] Токен не найден в запросе")
auth_state = AuthState()
auth_state.logged_in = False
auth_state.author_id = None
auth_state.error = "No authentication token provided"
auth_state.token = None
return auth_state
logger.debug(f"[authenticate] Токен найден, длина: {len(token)}")
# Проверяем токен
try:
# Создаем экземпляр SessionTokenManager
session_manager = SessionTokenManager()
# Проверяем токен
auth_result = await session_manager.verify_session(token)
# Используем TokenManager вместо прямого создания SessionTokenManager
auth_result = await TokenManager.verify_session(token)
if auth_result and hasattr(auth_result, "user_id"):
if auth_result and hasattr(auth_result, "user_id") and auth_result.user_id:
logger.debug(f"[authenticate] Успешная аутентификация, user_id: {auth_result.user_id}")
auth_state = AuthState()
auth_state.logged_in = True
auth_state.author_id = auth_result.user_id
auth_state.error = None
auth_state.token = token
return auth_state
error_msg = "Invalid or expired token"
logger.warning(f"[authenticate] Недействительный токен: {error_msg}")
auth_state = AuthState()
auth_state.logged_in = False
auth_state.author_id = None
auth_state.error = error_msg
auth_state.token = None
return auth_state
except Exception as e:
logger.error(f"[authenticate] Ошибка при проверке токена: {e}")
auth_state = AuthState()
auth_state.logged_in = False
auth_state.author_id = None
auth_state.error = f"Authentication error: {e!s}"
auth_state.token = None
return auth_state

View File

@ -780,13 +780,14 @@ async def admin_get_invites(
"id": invite.inviter.id,
"name": invite.inviter.name or "Без имени",
"email": invite.inviter.email,
"slug": invite.inviter.slug,
"slug": invite.inviter.slug
or f"user-{invite.inviter.id}", # Добавляем значение по умолчанию
},
"author": {
"id": invite.author.id,
"name": invite.author.name or "Без имени",
"email": invite.author.email,
"slug": invite.author.slug,
"slug": invite.author.slug or f"user-{invite.author.id}", # Добавляем значение по умолчанию
},
"shout": {
"id": invite.shout.id,
@ -796,7 +797,8 @@ async def admin_get_invites(
"id": invite.shout.created_by_author.id,
"name": invite.shout.created_by_author.name or "Без имени",
"email": invite.shout.created_by_author.email,
"slug": invite.shout.created_by_author.slug,
"slug": invite.shout.created_by_author.slug
or f"user-{invite.shout.created_by_author.id}", # Добавляем значение по умолчанию
},
},
"created_at": None, # У приглашений нет created_at поля в текущей модели