Skip to content

Commit

Permalink
EPMRPP-83945 || RP_INITIAL_ADMIN_PASSWORD parameter is required only …
Browse files Browse the repository at this point in the history
…for the first (clean) installation (#256)

* EPMRPP-83945 || Update initial password

---------

Co-authored-by: Andrei Piankouski <[email protected]>
  • Loading branch information
APiankouski and APiankouski authored May 13, 2023
1 parent 635e4f4 commit 8dbe2cc
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version=5.8.1
version=5.8.0
description=Unified Authorization Trap for all ReportPortal's Services
dockerPrepareEnvironment=
dockerJavaOpts=-Xmx512m -XX:+UseG1GC -XX:InitiatingHeapOccupancyPercent=70 -Djava.security.egd=file:/dev/./urandom
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public class AdminPasswordInitializer implements CommandLineRunner {

private final UserRepository userRepository;

@Value("${rp.initial.admin.password}")
@Value("${rp.initial.admin.password:}")
private String adminPassword;

public AdminPasswordInitializer(UserRepository userRepository) {
Expand All @@ -38,17 +38,16 @@ public AdminPasswordInitializer(UserRepository userRepository) {
@Override
@Transactional
public void run(String... args) {
checkPasswordEnvVariable();

User user = userRepository.findByLogin(SUPER_ADMIN_LOGIN)
.orElseThrow(() -> new EntityNotFoundException(SUPER_ADMIN_LOGIN + " not found"));
Optional<Object> lastLogin = ofNullable(user.getMetadata())
.flatMap(metadata -> ofNullable(metadata.getMetadata()))
.map(meta -> meta.get(USER_LAST_LOGIN))
.or(() -> Optional.of(INITIAL_LAST_LOGIN));
Object lastLogin = ofNullable(user.getMetadata())
.flatMap(metadata -> ofNullable(metadata.getMetadata()))
.map(meta -> meta.get(USER_LAST_LOGIN))
.orElseGet(() -> Optional.of(INITIAL_LAST_LOGIN));
checkPasswordEnvVariable(lastLogin);

boolean isMatches = passwordEncoder().matches(adminPassword, user.getPassword());
if (!isMatches && lastLogin.get().equals(INITIAL_LAST_LOGIN)) {
if (!isMatches && lastLogin.equals(INITIAL_LAST_LOGIN) && StringUtils.isNotEmpty(adminPassword)) {
updatePasswordForDefaultAdmin(user);
}
}
Expand All @@ -58,8 +57,8 @@ private void updatePasswordForDefaultAdmin(User defaultAdmin) {
userRepository.save(defaultAdmin);
}

private void checkPasswordEnvVariable() {
if (StringUtils.isBlank(adminPassword)) {
private void checkPasswordEnvVariable(Object lastLogin) {
if (StringUtils.isBlank(adminPassword) && lastLogin.equals(INITIAL_LAST_LOGIN)) {
LOGGER.error(ERROR_MSG);
throw new EnvironmentVariablesNotProvidedException(ERROR_MSG);
}
Expand Down

0 comments on commit 8dbe2cc

Please sign in to comment.