Eu devo gerar um Admin Initializer? 👀 #8
-
Dúvida: Devo criar um Comando para Gerar o Admin Automaticamente com Senhas Aleatórias?ContextoEstou considerando a implementação de um comando que cria um usuário admin automaticamente na primeira execução da aplicação. A ideia é garantir que sempre haja um usuário admin disponível no sistema sem a necessidade de criá-lo manualmente. A senha seria gerada de forma aleatória para maior segurança. Aqui está o código que pensei em usar: Código Propostoimport org.springframework.boot.CommandLineRunner;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
import java.security.SecureRandom;
import java.util.Locale;
import java.util.Objects;
import java.util.Random;
@Component
public class AdminInitializer implements CommandLineRunner {
private final UserRepository userRepository;
private final PasswordEncoder passwordEncoder;
public AdminInitializer(UserRepository userRepository, PasswordEncoder passwordEncoder) {
this.userRepository = userRepository;
this.passwordEncoder = passwordEncoder;
}
@Override
public void run(String... args) {
if (userRepository.findByUsername("admin").isEmpty()) {
String password = generateRandomPassword(12); // Gerar senha aleatória de 12 caracteres
User admin = new User();
admin.setUsername("admin");
admin.setPassword(passwordEncoder.encode(password)); // Senha criptografada
admin.setRole(Role.ROLE_ADMIN);
userRepository.save(admin);
System.out.println("Usuário admin criado com a senha: " + password);
}
}
// Método para gerar uma senha aleatória
private String generateRandomPassword(int length) {
String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+";
Random random = new SecureRandom();
StringBuilder password = new StringBuilder(length);
for (int i = 0; i < length; i++) {
password.append(characters.charAt(random.nextInt(characters.length())));
}
return password.toString();
}
} O que o código faz:
Perguntas:
Gostaria de saber se essa abordagem faz sentido ou se seria melhor criar o usuário admin de outra forma. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 5 replies
-
Eu acho que uma ideia interessante, até pq assim a api pode sempre esta atualizada com os dados mais atuais do jogo. Podemos criar uma página onde a pessoa pode adicionar o personagem no banco de dados. |
Beta Was this translation helpful? Give feedback.
Eu acho que uma ideia interessante, até pq assim a api pode sempre esta atualizada com os dados mais atuais do jogo. Podemos criar uma página onde a pessoa pode adicionar o personagem no banco de dados.