Модернизация на Symfony приложение: от проект от 2023 г. към актуален стек
Мини социална мрежа на Symfony, написана през 2023 г., беше заседнала на остарял стек: паролите се пазеха в md5, автентикацията беше собствено написана, тестове и автоматични проверки нямаше — всяко обновяване заплашваше да счупи приложението.
Стекът трябваше да се обнови, без да се загубят съществуващите потребители: старите md5 пароли трябва да работят до прехода към съвременен хеш. Тестове нямаше, затова функционалните тестове бяха написани преди промяната на автентикацията.
- Обновяване до PHP 8.3, Symfony 6.4 LTS и Doctrine ORM 3.6 с една съгласувана стъпка: +2226/−2058 реда, пакетите и конфигурацията са приведени към новите версии
- Собствената автентикация е заменена със Symfony Security: сесии и CSRF защита на всички POST действия
- Паролите са прехвърлени от md5 към съвременно хеширане със Symfony PasswordHasher; старият хеш прозрачно се преизчислява при първия успешен вход
- 7 функционални теста за ключовите сценарии: лента, регистрация и вход, публикуване, коментари, харесвания, изход, смяна на езика
- CI/CD в GitHub Actions: проверка на Composer и синтаксиса, линтери за YAML/Twig/контейнера, миграции и PHPUnit на PostgreSQL, публикуване на Docker образ в GHCR
- Интерфейс на руски и английски, схемата на Doctrine е синхронизирана с модела, демо модулът е премахнат, добавени са харесвания на публикации
Проектът е прехвърлен към поддържан стек без загуба на потребители: старите пароли се прехешират при вход, а всяка промяна минава през линтери, миграции и тестове в CI преди изграждането на образа.