Обновим основной класс приложения, для автоматического создания пользователей
Класс ContactsAppApplication является точкой входа в Spring Boot приложение и реализует интерфейс CommandLineRunner, что позволяет выполнить код при запуске приложения.
Основные функции класса:
main запускает Spring Boot приложение.run вызывается автоматически при старте и создает двух пользователей: администратора и обычного пользователя.import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import ru.ksergey.ContactsApp.enums.AppRole;
import ru.ksergey.ContactsApp.model.AppUser;
import ru.ksergey.ContactsApp.repository.AppUserRepository;
@SpringBootApplication
public class ContactsAppApplication implements CommandLineRunner {
@Autowired
private AppUserRepository appUserRepository;
public static void main(String[] args) {
SpringApplication.run(ContactsAppApplication.class, args);
}
@Override
public void run(String... args) {
createUserIfNotExists("admin@admin.admin", AppRole.ADMIN);
createUserIfNotExists("user@user.user", AppRole.USER);
}
private void createUserIfNotExists(String email, AppRole role) {
if (appUserRepository.findByEmail(email).isEmpty()) {
AppUser account = new AppUser();
account.setEmail(email);
account.setPassword(new BCryptPasswordEncoder().encode("pass"));
account.setRole(role);
appUserRepository.save(account);
}
}
}
В результате запроса на http://localhost:PORT/api/auth/login с моделью запроса:
{
"email": "string",
"password": "string"
}
Ожидаем получить 200 OK с моделью ответа:
{
"email": "string",
"jwtToken": "ey1NiJ9.eyJzdWIiTAzMjYsNTgxMTc2Nn0.NVfYiKGQP-MSw",
"refreshToken": "eiJ9.eyJzdWIU4MTAzMjYsImV4cyNT.vb5qeAopc1oaF"
}