upgrade schema, resolvers, panel added
This commit is contained in:
170
CHANGELOG.md
170
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-форма на странице входа в админ-панель:
|
||||
- Добавлен тег `<form>` для устранения предупреждения браузера о полях пароля вне формы
|
||||
- Улучшена доступность и UX формы логина
|
||||
- Добавлены атрибуты `autocomplete` для улучшения работы с менеджерами паролей
|
||||
- Внедрена более строгая валидация полей и фокусировка на ошибках
|
||||
|
||||
### Added
|
||||
- Подробная документация модуля аутентификации в `docs/auth.md`
|
||||
- Система ролей и разрешений (RBAC)
|
||||
- Защита от брутфорс атак
|
||||
- Мультиязычная поддержка в email уведомлениях
|
||||
- Подробная документация по системе авторизации в `docs/auth.md`
|
||||
- Описание OAuth интеграции
|
||||
- Руководство по RBAC
|
||||
- Примеры использования на фронтенде
|
||||
- Инструкции по безопасности
|
||||
- Документация по тестированию
|
||||
- Страница входа для неавторизованных пользователей в админке
|
||||
- Публичное GraphQL API для модуля аутентификации:
|
||||
- Типы: `AuthResult`, `Permission`, `SessionInfo`, `OAuthProvider`
|
||||
- Мутации: `login`, `registerUser`, `sendLink`, `confirmEmail`, `getSession`, `changePassword`
|
||||
- Запросы: `signOut`, `me`, `isEmailUsed`, `getOAuthProviders`
|
||||
|
||||
### Changed
|
||||
- Переработана структура модуля auth для лучшей модульности
|
||||
- Улучшена обработка ошибок в auth endpoints
|
||||
- Оптимизировано хранение сессий в Redis
|
||||
- Усилена безопасность хеширования паролей
|
||||
- Удалена поддержка удаленной аутентификации в пользу единой локальной системы аутентификации
|
||||
- Удалены настройки `AUTH_MODE` и `AUTH_URL`
|
||||
- Удалены зависимости от внешнего сервиса авторизации
|
||||
- Упрощен код аутентификации
|
||||
- Консолидация типов для авторизации:
|
||||
- Удален дублирующий тип `UserInfo`
|
||||
- Расширен тип `Author` полями для работы с авторизацией (`roles`, `email_verified`)
|
||||
- Использование единого типа `Author` во всех запросах авторизации
|
||||
|
||||
### Fixed
|
||||
- Исправлена проблема с кэшированием разрешений
|
||||
- Улучшена валидация email и username
|
||||
- Исправлена обработка истекших токенов
|
||||
- Исправлена ошибка в функции `get_with_stat` в модуле resolvers/stat.py: добавлен вызов метода `.unique()` для результатов запросов с joined eager loads
|
||||
- Исправлены ошибки в декораторах auth:
|
||||
- Добавлены проверки на None для объекта `info` в декораторах `admin_auth_required` и `require_permission`
|
||||
- Улучшена обработка ошибок в GraphQL контексте
|
||||
- Добавлен AuthenticationMiddleware с использованием InternalAuthentication для работы с request.auth
|
||||
- Исправлена ошибка с классом InternalAuthentication:
|
||||
- Добавлен класс AuthenticatedUser
|
||||
- Реализован корректный возврат кортежа (AuthCredentials, BaseUser) из метода authenticate
|
||||
|
||||
#### [0.4.21] - 2023-09-10
|
||||
|
||||
### Изменено
|
||||
- Переработана пагинация в админ-панели: переход с модели page/perPage на limit/offset
|
||||
- Улучшена производительность при работе с большими списками пользователей
|
||||
- Оптимизирован GraphQL API для управления пользователями
|
||||
|
||||
### Исправлено
|
||||
- Исправлена ошибка GraphQL "Unknown argument 'page' on field 'Query.adminGetUsers'"
|
||||
- Согласованы параметры пагинации между клиентом и сервером
|
||||
|
||||
#### [0.4.20] - 2023-09-01
|
||||
|
||||
### Добавлено
|
||||
- Пагинация списка пользователей в админ-панели
|
||||
- Серверная поддержка пагинации в API для админ-панели
|
||||
- Поиск пользователей по email, имени и ID
|
||||
|
||||
### Изменено
|
||||
- Улучшен интерфейс админ-панели
|
||||
- Переработана обработка GraphQL запросов для списка пользователей
|
||||
|
||||
### Исправлено
|
||||
- Проблемы с авторизацией и проверкой токенов
|
||||
- Обработка ошибок в API модулях
|
||||
|
||||
#### [0.4.19] - 2025-04-14
|
||||
- dropped `Shout.description` and `Draft.description` to be UX-generated
|
||||
|
Reference in New Issue
Block a user