From a134b25213fa52f2c4f226a7ae98b812d39655f4 Mon Sep 17 00:00:00 2001 From: Nanne Baars Date: Tue, 2 May 2017 02:45:35 +0200 Subject: [PATCH] Scoreboard now returns the flags captured (title) --- .../org/owasp/webgoat/users/Scoreboard.java | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/users/Scoreboard.java b/webgoat-container/src/main/java/org/owasp/webgoat/users/Scoreboard.java index 1e0c66da5..4df198dcb 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/users/Scoreboard.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/users/Scoreboard.java @@ -3,6 +3,8 @@ package org.owasp.webgoat.users; import com.google.common.collect.Lists; import lombok.AllArgsConstructor; 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.RestController; @@ -21,12 +23,14 @@ public class Scoreboard { private final UserTrackerRepository userTrackerRepository; private final UserRepository userRepository; + private final Course course; + private final PluginMessages pluginMessages; @AllArgsConstructor @Getter private class Ranking { private String username; - private int flagsCaptured; + private List flagsCaptured; } @GetMapping("/scoreboard") @@ -35,17 +39,23 @@ public class Scoreboard { List rankings = Lists.newArrayList(); for (WebGoatUser user : allUsers) { UserTracker userTracker = userTrackerRepository.findOne(user.getUsername()); - int challengesSolved = challengesSolved(userTracker); - rankings.add(new Ranking(user.getUsername(), challengesSolved)); + rankings.add(new Ranking(user.getUsername(), challengesSolved(userTracker))); } return rankings; } - private int challengesSolved(UserTracker userTracker) { + private List challengesSolved(UserTracker userTracker) { List challenges = Lists.newArrayList("Challenge1", "Challenge2", "Challenge3", "Challenge4", "Challenge5"); - List challengeTrackers = challenges.stream() + return challenges.stream() .map(c -> userTracker.getLessonTracker(c)) - .filter(l -> l.isPresent()).map(l -> l.get()).collect(Collectors.toList()); - return challengeTrackers.size(); + .filter(l -> l.isPresent()).map(l -> l.get()) + .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); } }