MiniShop3 1.13.0 (Август 2026)

1.13.0-beta1 — самый крупный релиз компонента за долгое время: больше сотни коммитов, публичный Web API для headless-витрины, дальнейший переезд админки на Vue и большая партия security-фиксов в обоих API. Разберу по порядку.

Публичный Web API — витрина и кабинет клиента



Каталог товаров теперь доступен без авторизации: список и карточка товара отдаются напрямую, без токена. Это открывает дорогу headless-витринам — фронт может тянуть каталог с любого домена, не поднимая сессию MODX.

Для клиента добавили полноценный кабинет через Web API: история заказов, карточка заказа, отмена заказа, logout, восстановление пароля по email. Восстановление пароля защищено от перебора email — ответ одинаковый независимо от того, существует адрес или нет, плюс rate limit по IP и по email.

Важно для интеграторов. Ответы Web API по клиенту теперь формируются по белому списку полей — токен и пароль из ответа исключены гарантированно, а добавление/обновление профиля принимает только разрешённые поля.

Админка: ещё четыре страницы без ExtJS



Заказы, клиенты с уведомлениями, настройки и утилиты — теперь чистый Vue без ExtJS-обёрток, как раньше уже сделали с товарами и категориями. Каждая страница монтируется одним Vite-бандлом, без костылей с ожиданием готовности DOM от ExtJS.

В карточке товара туда же переехали вкладки «Категории» (раньше — дерево на ExtJS) и «Связи» — обе на переиспользуемых Vue-компонентах.

Что ещё нового



  • Новый тип extra-поля «ключ-значение» — настраиваемые пары с режимами «фиксированный набор» и «свободный ввод»
  • В галерее товара можно назначить любое фото главным превью, не трогая порядок сортировки самой галереи
  • Импорт CSV подхватывает колонки extra fields — раньше терялись при маппинге
  • Программное создание заказов без сессии — для интеграций и cron, с защитой от повторного создания одного и того же заказа
  • Хранилище для rate limit можно вынести в Redis или Memcached — по умолчанию по-прежнему файловое, менять ничего не нужно

Под капотом



Контроллер заказов и реестр сервисов разобрали на более мелкие куски — раньше это были одни из самых больших файлов в проекте. Расчёт стоимости заказа на витрине и в админке теперь считается одним и тем же кодом, а не двумя параллельными реализациями, которые время от времени расходились. Ответы API на границе HTTP унифицировали под один формат.

Безопасность



Большая пачка фиксов в обоих API. На Web API — закрыли захват сессии через email до её верификации, токен теперь надёжно перевыпускается при входе — заранее подготовленный чужой токен использовать после авторизации нельзя, CORS больше не разрешает любой домен (*) вместе с credentials, истёкшие токены теперь отклоняются, а не тихо продлеваются. На Manager API — донастроили права на запись заказов и настроек, закрыли пару уязвимостей, где можно было получить доступ к товару или категории по чужому ID в обход текущей категории, убрали утечку служебного токена и части данных клиента в ответах API.

Стабильность и фиксы



  • Заказ больше нельзя оформить с несовместимой парой доставка/оплата — проверка теперь одна на все пути (сабмит, checkout, админка, финализация)
  • Смена опции товара в корзине наконец доведена до конца на всех уровнях — Web API и витрина
  • Вес черновика заказа считается как вес единицы товара, умноженный на количество — раньше могло разъезжаться
  • Защита от дублей номера заказа при одновременном сабмите
  • Починены кракозябры вместо символа рубля в настройке валюты по умолчанию
  • Уже перед самым релизом поймал и починил несколько свежих Vue-регрессий: дублирующиеся диалоги подтверждения на паре страниц админки, зависание вкладки «Опции» в настройках и гонку токена на холодной загрузке Vue-страниц

Спасибо



И снова — почти весь релиз сделан руками Ивана Бочкарева (@Иван Бочкарев): Web API, переезд админки на Vue, декомпозиция сервисов, security-фиксы. Огромная работа за один цикл.

Что дальше



Полный список изменений — в CHANGELOG на GitHub, релиз — на странице v1.13.0-beta1. Нашли баг или есть пожелание — пишите в issues.
Николай Савин
Николай Савин
7 часов назад
modx.pro
27

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0