- Сначала моя конечная точка регистрации просто принимала массив ролей в DTO. Но я пришел к выводу, что это плохая идея.
- Затем я подумал о вставке этого в Liquibase YAML. Но в самом приложении (BCrypt) есть функция хеширования паролей, поэтому я не представляю, как ее можно воспроизвести в YAML. Если только я не получу хэш внешними средствами (в Интернете доступны веб-сервисы BCrypt) и просто жестко закодирую его в YAML. Но все равно мне пришлось бы вручную вставлять в таблицу соединения ролей пользователя (— отдельная таблица, обязательно). Я даже не уверен, как это сделать в Liquibase YAML без жесткого кодирования UUID роли администратора и пользователя-администратора — на данный момент они генерируются с помощью valueComputed: "gen_random_uuid()". Думаю, я мог бы проделать еще один трюк с valueComputed, но это будет выглядеть некрасиво.
Код: Выделить всё
role - Теоретически я мог бы прослушать какое-нибудь событие Spring (например, ApplicationReadyEvent) и вставить туда обе роли и корневого администратора (сначала убедившись, что они еще не существуют). Или включите его в CommandLineRunner. Другими словами, интегрируйте его в некоторую логику запуска Spring. Имя пользователя и пароль администратора могут храниться в файле свойств.
Это не обязательно должна быть «лучшая практика», готовая к использованию, если это разумно. Это проект для подачи заявления о приеме на работу (а не Google или другая компания, занимающаяся модными штанами).