diff --git a/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java b/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java index 261fc307..9299d477 100644 --- a/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java +++ b/src/main/java/stirling/software/SPDF/config/security/InitialSecuritySetup.java @@ -36,12 +36,13 @@ public class InitialSecuritySetup { @PostConstruct public void init() { try { - if (databaseService.hasBackup()) { - databaseService.importDatabase(); - } if (!userService.hasUsers()) { - initializeAdminUser(); + if (databaseService.hasBackup()) { + databaseService.importDatabase(); + } else { + initializeAdminUser(); + } } userService.migrateOauth2ToSSO(); diff --git a/src/main/java/stirling/software/SPDF/config/security/UserService.java b/src/main/java/stirling/software/SPDF/config/security/UserService.java index 71c9f779..e5ecc64e 100644 --- a/src/main/java/stirling/software/SPDF/config/security/UserService.java +++ b/src/main/java/stirling/software/SPDF/config/security/UserService.java @@ -121,12 +121,14 @@ public class UserService implements UserServiceInterface { } public User addApiKeyToUser(String username) { - Optional user = findByUsernameIgnoreCase(username); - if (user.isPresent()) { - user.get().setApiKey(generateApiKey()); - return userRepository.save(user.get()); + Optional userOpt = findByUsernameIgnoreCase(username); + User user = saveUser(userOpt, generateApiKey()); + try { + databaseService.exportDatabase(); + } catch (SQLException | UnsupportedProviderException e) { + log.error("Error exporting database after adding API key to user", e); } - throw new UsernameNotFoundException("User not found"); + return user; } public User refreshApiKeyForUser(String username) { @@ -171,6 +173,14 @@ public class UserService implements UserServiceInterface { saveUser(username, authenticationType, Role.USER.getRoleId()); } + private User saveUser(Optional user, String apiKey) { + if (user.isPresent()) { + user.get().setApiKey(apiKey); + return userRepository.save(user.get()); + } + throw new UsernameNotFoundException("User not found"); + } + public void saveUser(String username, AuthenticationType authenticationType, String role) throws IllegalArgumentException, SQLException, UnsupportedProviderException { if (!isUsernameValid(username)) {