@Override
public void removeUserFromSuperAdminRole(final UserInfo candidateUserInfo, final UserInfo assigningUserInfo) {
LOGGER.debug("Removing user={} from superadmin by assigningUser={}", candidateUserInfo, assigningUserInfo);
List<UserRole> allSuperAdmins = getSuperAdminRoleList();
LOGGER.debug("Current superadmins {}", allSuperAdmins);
Preconditions.checkArgument(allSuperAdmins.size() > 1,
"Cannot delete. SuperAdmins less than 1");
boolean isSuperAdmin = allSuperAdmins.stream().anyMatch((UserRole ur) -> ur.getRole().equals(Role.SUPERADMIN)
&& ur.getUserID().equals(candidateUserInfo.getUsername()));
Preconditions.checkArgument(isSuperAdmin,
"User %s is not a superadmin", candidateUserInfo.getUsername());
authorizationRepository.removeUserFromSuperAdminRole(candidateUserInfo);
eventLog.postEvent(new AuthorizationChangeEvent(assigningUserInfo,
null, candidateUserInfo, Role.SUPERADMIN.toString(), null));
}