This commit is contained in:
parent
b01de1fdc1
commit
5cfde98c22
|
@ -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 приглашений
|
||||
|
||||
- **НОВОЕ**: Полноценное управление приглашениями в админ-панели:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 поля в текущей модели
|
||||
|
|
Loading…
Reference in New Issue
Block a user