Skip to content

Commit

Permalink
Scoreboard now returns the flags captured (title)
Browse files Browse the repository at this point in the history
  • Loading branch information
nbaars committed May 2, 2017
1 parent eb7a6bd commit a134b25
Showing 1 changed file with 17 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
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;

Expand All @@ -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<String> flagsCaptured;
}

@GetMapping("/scoreboard")
Expand All @@ -35,17 +39,23 @@ public List<Ranking> getRankings() {
List<Ranking> 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<String> challengesSolved(UserTracker userTracker) {
List<String> challenges = Lists.newArrayList("Challenge1", "Challenge2", "Challenge3", "Challenge4", "Challenge5");
List<LessonTracker> 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);
}
}

0 comments on commit a134b25

Please sign in to comment.