### 🚨 Исправлено - **Удалено поле username из модели Author**: Поле `username` больше не является частью модели `Author` - Убрано свойство `@property def username` из `orm/author.py` - Обновлены все сервисы для использования `email` или `slug` вместо `username` - Исправлены резолверы для исключения `username` при обработке данных автора - Поле `username` теперь используется только в JWT токенах для совместимости ### 🧪 Исправлено - **E2E тесты админ-панели**: Полностью переработаны E2E тесты для работы с реальным API - Тесты теперь делают реальные HTTP запросы к GraphQL API - Бэкенд для тестов использует выделенную тестовую БД (`test_e2e.db`) - Создан фикстура `backend_server` для запуска тестового сервера - Добавлен фикстура `create_test_users_in_backend_db` для регистрации пользователей через API - Убраны несуществующие GraphQL запросы (`get_community_stats`) - Тесты корректно работают с системой ролей и правами администратора ### �� Техническое - **Рефакторинг аутентификации**: Упрощена логика работы с пользователями - Убраны зависимости от несуществующих полей в ORM моделях - Обновлены сервисы аутентификации для корректной работы без `username` - Исправлены все места использования `username` в коде - **Улучшена тестовая инфраструктура**: - Тесты теперь используют реальный HTTP API вместо прямых DB проверок - Правильная изоляция тестовых данных через отдельную БД - Корректная работа с системой ролей и правами
This commit is contained in:
@@ -257,7 +257,6 @@ class AuthService:
|
||||
slug = generate_unique_slug(name if name else email.split("@")[0])
|
||||
user_dict = {
|
||||
"email": email,
|
||||
"username": email,
|
||||
"name": name if name else email.split("@")[0],
|
||||
"slug": slug,
|
||||
}
|
||||
@@ -300,7 +299,7 @@ class AuthService:
|
||||
except (AttributeError, ImportError):
|
||||
token = await TokenStorage.create_session(
|
||||
user_id=str(user.id),
|
||||
username=str(user.username or user.email or user.slug or ""),
|
||||
username=str(user.email or user.slug or ""),
|
||||
device_info={"email": user.email} if hasattr(user, "email") else None,
|
||||
)
|
||||
|
||||
@@ -333,7 +332,7 @@ class AuthService:
|
||||
device_info = {"email": user.email} if hasattr(user, "email") else None
|
||||
session_token = await TokenStorage.create_session(
|
||||
user_id=str(user_id),
|
||||
username=user.username or user.email or user.slug or username,
|
||||
username=user.email or user.slug or username,
|
||||
device_info=device_info,
|
||||
)
|
||||
|
||||
@@ -385,7 +384,7 @@ class AuthService:
|
||||
return {"success": False, "token": None, "author": None, "error": str(e)}
|
||||
|
||||
# Создаем токен
|
||||
username = str(valid_author.username or valid_author.email or valid_author.slug or "")
|
||||
username = str(valid_author.email or valid_author.slug or "")
|
||||
token = await TokenStorage.create_session(
|
||||
user_id=str(valid_author.id),
|
||||
username=username,
|
||||
@@ -488,7 +487,7 @@ class AuthService:
|
||||
except (AttributeError, ImportError):
|
||||
token = await TokenStorage.create_session(
|
||||
user_id=str(author.id),
|
||||
username=str(author.username or author.email or author.slug or ""),
|
||||
username=str(author.email or author.slug or ""),
|
||||
device_info={"email": author.email} if hasattr(author, "email") else None,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user