Caso de uso - signup
Cadastro de usuário no sistema.
Cenário principal:
[IN] O usuário informa primeiro nome, sobrenome, e-mail e senha
Exceção 1.1: Erro de validação
[OUT] O sistema informa os erros de validação
Informações complementares
Critérios de validação de usuário
Nome: campo requerido
E-mail: e-mail válido
Senha: mínimo 8 caracteres
Primeira coisa é retirar o @PreAuthorize de Admin para que qualquer pessoa possa se registrar.
Na requisição Postman, retirar a lista de roles que é passada, afinal ele vai ser gerada automaticamente pelo backend.
No UserInsertDTO, passar @NotBlank, @Size na password.
No service, precisamos settar a role no insert, mas antes disso, depois de usar o copy, dar clear, veja:
@Transactional
public UserDTO insert(UserInsertDTO dto) {
User entity = new User();
copyDtoToEntity(dto, entity);
//clear
entity.getRoles().clear();
//settando role manualmente, usando repository
Role role = roleRepository.findByAuthority("ROLE_OPERATOR");
entity.getRoles().add(role);
entity.setPassword(passwordEncoder.encode(dto.getPassword()));
entity = repository.save(entity);
return new UserDTO(entity);
}
Fazer a requisição no Postman:

AnteriorDica drop table em todas tabelasPróximoConfigurando senha de app do Gmail (iniciando recuperação de senha)
Atualizado