Scoreboard now returns the flags captured (title)
This commit is contained in:
parent
eb7a6bd2be
commit
a134b25213
@ -3,6 +3,8 @@ package org.owasp.webgoat.users;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
import org.owasp.webgoat.i18n.PluginMessages;
|
||||||
|
import org.owasp.webgoat.session.Course;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
@ -21,12 +23,14 @@ public class Scoreboard {
|
|||||||
|
|
||||||
private final UserTrackerRepository userTrackerRepository;
|
private final UserTrackerRepository userTrackerRepository;
|
||||||
private final UserRepository userRepository;
|
private final UserRepository userRepository;
|
||||||
|
private final Course course;
|
||||||
|
private final PluginMessages pluginMessages;
|
||||||
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
private class Ranking {
|
private class Ranking {
|
||||||
private String username;
|
private String username;
|
||||||
private int flagsCaptured;
|
private List<String> flagsCaptured;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/scoreboard")
|
@GetMapping("/scoreboard")
|
||||||
@ -35,17 +39,23 @@ public class Scoreboard {
|
|||||||
List<Ranking> rankings = Lists.newArrayList();
|
List<Ranking> rankings = Lists.newArrayList();
|
||||||
for (WebGoatUser user : allUsers) {
|
for (WebGoatUser user : allUsers) {
|
||||||
UserTracker userTracker = userTrackerRepository.findOne(user.getUsername());
|
UserTracker userTracker = userTrackerRepository.findOne(user.getUsername());
|
||||||
int challengesSolved = challengesSolved(userTracker);
|
rankings.add(new Ranking(user.getUsername(), challengesSolved(userTracker)));
|
||||||
rankings.add(new Ranking(user.getUsername(), challengesSolved));
|
|
||||||
}
|
}
|
||||||
return rankings;
|
return rankings;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int challengesSolved(UserTracker userTracker) {
|
private List<String> challengesSolved(UserTracker userTracker) {
|
||||||
List<String> challenges = Lists.newArrayList("Challenge1", "Challenge2", "Challenge3", "Challenge4", "Challenge5");
|
List<String> challenges = Lists.newArrayList("Challenge1", "Challenge2", "Challenge3", "Challenge4", "Challenge5");
|
||||||
List<LessonTracker> challengeTrackers = challenges.stream()
|
return challenges.stream()
|
||||||
.map(c -> userTracker.getLessonTracker(c))
|
.map(c -> userTracker.getLessonTracker(c))
|
||||||
.filter(l -> l.isPresent()).map(l -> l.get()).collect(Collectors.toList());
|
.filter(l -> l.isPresent()).map(l -> l.get())
|
||||||
return challengeTrackers.size();
|
.map(l -> l.getLessonName())
|
||||||
|
.map(l -> toLessonTitle(l))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
private String toLessonTitle(String id) {
|
||||||
|
String titleKey = course.getLessons().stream().filter(l -> l.getId().equals(id)).findFirst().get().getTitle();
|
||||||
|
return pluginMessages.getMessage(titleKey, titleKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user