Spring Boot Web Application (MVC): готовим приложение к деплою, наводим порядок: фиксируем структуру БД и переходим на версионирование БД с использованием flyway. Дополнительно добавляем в БД дефолтного администратора и добавляем страницу профиля пользователя, где каждый пользователь может поменять свой пароль или email.
Миграции нужны для версионирования изменений БД в соответствии со структурой доменной модели. Проще говоря: при запуске проекта из репозитория с нуля на любом этапе, мы получим нужную структуру БД, со всеми таблицами и полями, которые нужны для работы приложения + все необходимые данные, вроде дефолтного администратора.
Сайт flyway:
[ Ссылка ]
Код из видео:
[ Ссылка ]
Самой первой миграцией нужно задать стартовую структуру БД. Для этого добавим в наш файл application.properties следующие свойства:
[ Ссылка ]
И запустим приложение. В логах приложения ищем записи, начинающиеся со слова Hibernate и копируем все строки, в которых создаются объекты БД. После этого создаём директорию миграций db/migration в директории проекта resources, куда добавляем первый файл миграции с именем V1__Init_db.sql. Правила оформления имен файлов можно почитать тут:
[ Ссылка ]
В этот файл вставляем скопированные из логов скрипты и оформляем код, в соответствии с требованиями синтаксиса SQL.
Осталось добавить зависимость на flyway и переход на миграции окончен:
[ Ссылка ]
Теперь при разворачивании приложения на сервере мы получим чистую БД. Соответственно, все новые пользователи будут иметь рядовые права и создать администратора будет невозможно без прямого доступа к БД.
Чтобы исправить этот огрех, добавим миграцию, в которой вручную опишем добавление администратора по умолчанию. Создаём скрипт миграции V2__Add_admin.sql и описываем там добавление пользователя.
Теперь администратор есть, но у него фиксированный и простой пароль, который он (да и любой другой пользователь) не может изменить. Также никто из пользователей не может изменить свой email.
Для добавления редактора этих полей, создаём шаблон profile.ftl и ответную его часть в контроллере UserController. В UserService добавляем код, обрабатывающий смену пароля и почтового адреса. Если происходит смена почты, то повторно отправляем пользователю ссылку на подтверждение почтового адреса
Для проверки корректности работы приложения можно использовать сервис времменых почтовых ящиков:
[ Ссылка ]
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Твиттер: [ Ссылка ]
➡ Чат в Discord: [ Ссылка ]
➡ Группа Вконтакте: [ Ссылка ]
➡ Канал в Telegram: [ Ссылка ]
➡ Чат в Telegram: [ Ссылка ]
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
Поддержать проект:
➡ Patreon [ Ссылка ]
➡ Яндекс.Деньги [ Ссылка ]
➡ PayPal paypal.me/letscodedru
➡ Qiwi [ Ссылка ]
➡ WebMoney/BitCoin [ Ссылка ]
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
Ссылка на канал: [ Ссылка ]
Ссылка на Яндекс.Дзен: [ Ссылка ]
![](https://s2.save4k.ru/pic/ArM7nCys4hY/maxresdefault.jpg)