Це оновлення не додає нових вітринних кнопок. Воно про три речі, які власник магазину помічає лише тоді, коли їх немає: чужий не зайде в адмінку з украденим паролем, завжди можна побачити, хто змінив ціну чи статус замовлення, і сайт не «зависає» під час імпорту прайсу.
Вхід в адмінку з підтвердженням із телефона
Паролі витікають: із чужого сервісу, з поштової скриньки, з ноутбука менеджера. Тепер один пароль нічого не дає. Після нього адмінка просить шестизначний код із застосунку на телефоні — Google Authenticator, Microsoft Authenticator, 1Password чи будь-якого іншого. Код живе 30 секунд і ніде не пересилається.

- вмикається за хвилину: відсканувати QR-код і ввести код із застосунку;
- 8 резервних кодів на випадок, якщо телефон загубився — кожен спрацьовує один раз;
- «Довіряти цьому браузеру 30 днів» — на своєму робочому комп'ютері код просять не щодня;
- захист стоїть на всіх дверях: вхід в адмінку, вхід на вітрині тим самим акаунтом і «запам'ятати мене» — обійти через бічний вхід не вийде.

Журнал дій: хто змінив ціну о третій ночі
Ціна на товар раптом стала іншою. Замовлення зникло зі списку. З'явилась знижка, якої ніхто не давав. Раніше на питання «хто це зробив?» відповіді не було. Тепер є: адмінка записує кожну зміну з іменем користувача, часом, адресою, з якої зайшли, і тим, що саме було до і стало після.

Товари
Ціна, наявність, активність, видалення — з номером товару і старим значенням.
Замовлення
Зміна статусу, оплати, правка складу замовлення, видалення.
Налаштування
Кожне змінене поле налаштувань магазину — окремим рядком.
Користувачі
Створення, зміна ролі, блокування, видалення адміністраторів.
Модулі
Встановлення, вимкнення і видалення модулів.
Входи
Вдалі й невдалі спроби входу, зокрема з неправильним кодом.
- фільтр за користувачем, дією, типом об'єкта, номером і датою — «усе, що робив менеджер Олег із замовленням 9901689» в один клік;
- експорт у CSV для бухгалтерії чи розбору спірної ситуації — файл безпечно відкривати в Excel;
- історія зберігається 90 днів (термін можна змінити), старі записи планувальник прибирає сам.
База даних сама стає швидшою й надійнішою
Магазини, що переїхали з ImageCMS, живуть на старому рушії таблиць MyISAM. Для покупця це виглядає так: поки з 1С вантажиться прайс, каталог «думає», бо старий рушій блокує всю таблицю на час запису. А після аварійного перезавантаження сервера така таблиця може лишитись битою. Сучасний рушій InnoDB блокує лише той рядок, який змінюється, і сам відновлюється після збою.
Переводити базу руками — довго й страшно. Тому ECMS9 робить це сама: планувальник щогодини бере невелику порцію таблиць і переводить їх, витрачаючи не більше двох хвилин за раз. Магазин тим часом працює.

Перевіряє умови
Вільне місце на диску, розмір таблиці, чи не кластер — інакше пропускає.
Бере порцію
Не більше 120 секунд роботи на годину, найменші таблиці — першими.
Переводить і записує
Кожен крок — у власний журнал: коли, яку таблицю, скільки тривало.
Повторює наступної години
Доки в базі не лишиться жодної старої таблиці.
На копії живого магазину зі 115 старими таблицями повний переїзд зайняв одну порцію; кількість записів у кожній таблиці до і після — однакова. Якщо хостинг чи адміністратор просить не чіпати базу, конвертацію вимикає один рядок у налаштуваннях сайту.
Що не змінилось — і чому це головне
Правило цього оновлення: жодного втраченого даного, жодної зміненої адреси. Перед публікацією ми прогнали 5.0.5 через копію живого магазину і звірили результат зі старою версією.
- адреси товарів, категорій, sitemap і канонічні — байт у байт як були;
- власні теми клієнтів працюють без правок: нове екранування шаблонів увімкнене лише для нових інсталяцій, існуючі сайти лишаються як є;
- оновлення можна відкотити: попередній білд лишається в каталозі, а міграції бази нічого не видаляють.
Дрібніше, але корисне
Сайт не ходить туди, куди не треба
Вихідні запити з магазину (вебхуки, курси валют, API) більше не можна перенаправити на внутрішні адреси хостингу.
Ніяких паролів у коді
Стандартні паролі обміну з 1С прибрані з поставки; свій пароль зберігається лише у вигляді хешу.
Безпечні шаблони для нових сайтів
Нова інсталяція друкує дані з екрануванням за замовчуванням — вставити шкідливий скрипт через назву товару не вийде.
Пошук готовий до підключення рушіїв
Всередині з'явилась точка підключення зовнішнього пошуку — для великих каталогів у наступних версіях.
Ревізія безпеки
Пройдено десятий раунд аудиту: прибрано останні виклики eval, посилено обробку старих даних.
Маршрути фільтрів
Кілька брендів у фільтрі склеюються в одну адресу, повторний сегмент фільтра дає 404, а не дубль сторінки.
Як це отримати
Ядро оновлюється саме, якщо в панелі увімкнене автооновлення; інакше — кнопка «Перевірити оновлення». Актуальний білд — 5.0.5-b446. Після оновлення радимо зробити дві речі: увімкнути журнал дій і поставити собі двофакторний захист. Переїзд бази стартує сам і закінчиться за кілька годин — залежно від розміру каталогу. Якщо у вас своя тема — нічого робити не треба.
Підкажемо, що це дає саме вашому магазину
Подивимось ваш сайт, скажемо, що з нового вмикати першим, і чи треба щось міняти в темі.
Написати в Telegram