diff --git a/.gitignore b/.gitignore index 4db9e7e4..fe42d48f 100644 --- a/.gitignore +++ b/.gitignore @@ -161,4 +161,6 @@ views.json *.key *.crt *cache.json -.cursor \ No newline at end of file +.cursor + +node_modules/ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 90589770..6074c0c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,163 @@ -#### [0.4.20] - 2025-05-03 -- Исправлена ошибка в классе `CacheRevalidationManager`: добавлена инициализация атрибута `_redis` -- Улучшена обработка соединения с Redis в менеджере ревалидации кэша: - - Автоматическое восстановление соединения в случае его потери - - Проверка соединения перед выполнением операций с кэшем - - Дополнительное логирование для упрощения диагностики проблем -- Исправлен резолвер `unpublish_shout`: - - Корректное формирование синтетического поля `publication` с `published_at: null` - - Возвращение полноценного словаря с данными вместо объекта модели - - Улучшена загрузка связанных данных (авторы, темы) для правильного формирования ответа +# Changelog + +## [Unreleased] + +### Изменено +- Радикально упрощена структура клиентской части приложения: + - Удалены все избыточные файлы и директории + - Перемещены модули auth.ts и api.ts из директории client/lib в корень директории client + - Обновлены импорты во всех компонентах для использования модулей из корня директории + - Создана минималистичная архитектура с 5 файлами (App, login, admin, auth, api) + - Следование принципу DRY - устранено дублирование кода + - Выделены общие модули для авторизации и работы с API + - Единый стиль кода и документации для всех компонентов + - Устранены все жесткие редиректы в пользу SolidJS Router + - Упрощена структура проекта для лучшей поддерживаемости +- Упрощена структура клиентской части приложения: + - Оставлены только два основных ресурса: логин и панель управления пользователями + - Удалены избыточные компоненты и файлы + - Упрощена логика авторизации и навигации + - Устранены жесткие редиректы в пользу SolidJS Router + - Созданы компактные и автономные компоненты login.tsx и admin.tsx + - Оптимизированы стили для минимального набора компонентов + +### Добавлено +- Создана панель управления пользователями в админке: + - Добавлен компонент UsersList для управления пользователями + - Реализованы функции блокировки/разблокировки пользователей + - Добавлена возможность отключения звука (mute) для пользователей + - Реализовано управление ролями пользователей через модальное окно + - Добавлены GraphQL мутации для управления пользователями в schema/admin.graphql + - Улучшен интерфейс админ-панели с табами для навигации +- Расширена схема GraphQL для админки: + - Добавлены типы AdminUserInfo и AdminUserUpdateInput + - Добавлены мутации adminUpdateUser, adminToggleUserBlock, adminToggleUserMute + - Добавлены запросы adminGetUsers и adminGetRoles +- Пагинация списка пользователей в админ-панели +- Серверная поддержка пагинации в API для админ-панели +- Поиск пользователей по email, имени и ID + +### Улучшено +- Улучшен интерфейс админ-панели: + - Добавлены вкладки для переключения между разделами + - Оптимизирован компонент UsersList для работы с большим количеством пользователей + - Добавлены индикаторы статуса для заблокированных и отключенных пользователей + - Улучшена обработка ошибок при выполнении операций с пользователями + - Добавлены подтверждения для критичных операций (блокировка, изменение ролей) + +### Полностью переработан клиентский код: +- Создан компактный API клиент с изолированным кодом для доступа к API +- Реализована модульная архитектура с четким разделением ответственности +- Добавлены типизированные интерфейсы для всех компонентов и модулей +- Реализована система маршрутизации с защищенными маршрутами +- Добавлен компонент AuthProvider для управления авторизацией +- Оптимизирована загрузка компонентов с использованием ленивой загрузки +- Унифицирован стиль кода и именования + +### Исправлено +- Исправлена проблема с перенаправлением в SolidJS, которое сбрасывало состояние приложения: + - Обновлена функция logout для использования колбэка навигации вместо жесткого редиректа + - Добавлен компонент LoginPage для авторизации без перезагрузки страницы + - Реализована ленивая загрузка компонентов с использованием Suspense + - Улучшена структура роутинга в админ-панели + - Оптимизирован код согласно принципам DRY и KISS + +### Улучшения для авторизации в админ-панели + +- Исправлена проблема с авторизацией в админ-панели +- Добавлена поддержка httpOnly cookies для безопасного хранения токена авторизации +- Реализован механизм выхода из системы через отзыв токенов +- Добавлен компонент для отображения списка пользователей в админке +- Добавлена постраничная навигация между управлением переменными окружения и списком пользователей +- Улучшена обработка сессий в API GraphQL + +### Исправлено +- Переработан резолвер login_mutation для соответствия общему стилю других мутаций в кодбазе +- Реализована корректная обработка логина через `AuthResult`, устранена ошибка GraphQL "Cannot return null for non-nullable field Mutation.login" +- Улучшена обработка ошибок в модуле авторизации: + - Добавлена проверка корректности объекта автора перед созданием токена + - Исправлен порядок импорта резолверов для корректной регистрации обработчиков + - Добавлено расширенное логирование для отладки авторизации + - Гарантирован непустой возврат из резолвера login для предотвращения GraphQL ошибки +- Исправлена ошибка "Author password is empty" при авторизации: + - Добавлено поле password в метод dict() класса Author для корректной передачи при создании экземпляра из словаря +- Устранена ошибка `Author object has no attribute username` при создании токена авторизации: + - Добавлено свойство username в класс Author для совместимости с `TokenStorage` +- Исправлена HTML-форма на странице входа в админ-панель: + - Добавлен тег `