Fix sysadmin delete

This commit is contained in:
2026-01-22 22:19:39 +01:00
parent 14339bc018
commit 54bb2e6c49
3 changed files with 27 additions and 6 deletions

View File

@@ -57,7 +57,11 @@ public class SystemAdministratorApiController {
throw new ResponseStatusException(BAD_REQUEST, "Username is required");
}
String username = request.twitchUsername().trim();
systemAdministratorService.addSysadmin(username);
try {
systemAdministratorService.addSysadmin(username);
} catch (IllegalStateException e) {
throw new ResponseStatusException(BAD_REQUEST, e.getMessage(), e);
}
LOG.info("System administrator added: {} (requested by {})", username, sessionUsername);
return ResponseEntity.ok().body(systemAdministratorService.listSysadmins());
}

View File

@@ -71,7 +71,7 @@ public class SystemAdministratorService {
String initialSysadmin = getInitialSysadmin();
if (initialSysadmin != null && initialSysadmin.equals(normalized)) {
return;
throw new IllegalStateException("Cannot add the initial system administrator");
}
if (repo.existsByTwitchUsername(normalized)) {
@@ -81,6 +81,7 @@ public class SystemAdministratorService {
repo.save(new SystemAdministrator(normalized));
}
@Transactional
public void removeSysadmin(String twitchUsername) {
String normalized = normalize(twitchUsername);
String initialSysadmin = getInitialSysadmin();
@@ -118,11 +119,21 @@ public class SystemAdministratorService {
}
public List<String> listSysadmins() {
return repo
String initialSysadmin = getInitialSysadmin();
List<String> persistedAdmins = repo
.findAllByOrderByTwitchUsernameAsc()
.stream()
.map(SystemAdministrator::getTwitchUsername)
.collect(Collectors.toList());
if (initialSysadmin == null) {
return persistedAdmins;
}
return java.util.stream.Stream
.concat(persistedAdmins.stream(), java.util.stream.Stream.of(initialSysadmin))
.map(this::normalize)
.distinct()
.sorted()
.collect(Collectors.toList());
}
private String normalize(String username) {