From 2728158f1412b5611a15e61d7e311a6e7fc94947 Mon Sep 17 00:00:00 2001 From: Nanne Baars Date: Tue, 15 Nov 2016 10:26:09 +0100 Subject: [PATCH] #271 Reset lesson does not work anymore --- .../main/java/org/owasp/webgoat/HammerHead.java | 1 - .../org/owasp/webgoat/lessons/AbstractLesson.java | 7 ++----- .../webgoat/service/RestartLessonService.java | 15 ++++++++------- .../org/owasp/webgoat/session/LessonTracker.java | 2 +- .../org/owasp/webgoat/session/UserTracker.java | 4 ++++ .../js/goatApp/controller/LessonController.js | 15 ++------------- 6 files changed, 17 insertions(+), 27 deletions(-) diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/HammerHead.java b/webgoat-container/src/main/java/org/owasp/webgoat/HammerHead.java index 9180277ad..e2a09ab3a 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/HammerHead.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/HammerHead.java @@ -52,7 +52,6 @@ public class HammerHead { /** * Entry point for WebGoat, redirects to the first lesson found within the course. */ - //// TODO: 11/6/2016 course necessary? @RequestMapping(path = "/attack", method = {RequestMethod.GET, RequestMethod.POST}) public ModelAndView attack() { return new ModelAndView("redirect:" + "start.mvc" + course.getFirstLesson().getLink()); diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java index bfb6c9239..4648c0335 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java @@ -206,8 +206,7 @@ public abstract class AbstractLesson extends Screen implements ComparableRestartLessonService class.

@@ -39,6 +41,7 @@ import org.springframework.web.bind.annotation.ResponseBody; */ @Controller @AllArgsConstructor +@Slf4j public class RestartLessonService { private final WebSession webSession; @@ -50,13 +53,11 @@ public class RestartLessonService { * @return a {@link java.lang.String} object. */ @RequestMapping(path = "/service/restartlesson.mvc", produces = "text/text") - public - @ResponseBody - String restartLesson() { + @ResponseStatus(value = HttpStatus.OK) + public void restartLesson() { AbstractLesson al = webSession.getCurrentLesson(); - System.out.println("Restarting lesson: " + al); - userTracker.getLessonTracker(al).reset(); + log.debug("Restarting lesson: " + al); - return webSession.getCurrentLesson().getLink(); + userTracker.reset(al); } } diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/session/LessonTracker.java b/webgoat-container/src/main/java/org/owasp/webgoat/session/LessonTracker.java index d8d36f390..ccfe3b0cc 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/session/LessonTracker.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/session/LessonTracker.java @@ -76,7 +76,7 @@ public class LessonTracker implements Serializable { /** * Reset the tracker. We do not reset the number of attempts here! */ - public void reset() { + void reset() { solvedAssignments.clear(); } } diff --git a/webgoat-container/src/main/java/org/owasp/webgoat/session/UserTracker.java b/webgoat-container/src/main/java/org/owasp/webgoat/session/UserTracker.java index 692971da5..5e2dbdd22 100644 --- a/webgoat-container/src/main/java/org/owasp/webgoat/session/UserTracker.java +++ b/webgoat-container/src/main/java/org/owasp/webgoat/session/UserTracker.java @@ -97,4 +97,8 @@ public class UserTracker { } + public void reset(AbstractLesson al) { + getLessonTracker(al).reset(); + save(); + } } diff --git a/webgoat-container/src/main/resources/static/js/goatApp/controller/LessonController.js b/webgoat-container/src/main/resources/static/js/goatApp/controller/LessonController.js index d2568cfc4..3df9a2344 100644 --- a/webgoat-container/src/main/resources/static/js/goatApp/controller/LessonController.js +++ b/webgoat-container/src/main/resources/static/js/goatApp/controller/LessonController.js @@ -187,22 +187,11 @@ define(['jquery', this.restartLesson = function() { var self=this; - var fragment = "attack/" + self.scr + "/" + self.menu; - console.log("Navigating to " + fragment); - // Avoiding the trigger event - handle - navigate loop by - // loading the lesson explicitly (after executing the restart - // servlet). - goatRouter.navigate(fragment); - // Resetting the user's lesson state (assuming a single browser - // and session per user). $.ajax({ url:'service/restartlesson.mvc', method:'GET' - }).done(function(text) { - console.log("Received a response from the restart servlet: '" + text + "'"); - // Explicitly loading the lesson instead of triggering an - // event in goatRouter.navigate(). - self.loadLesson(self.scr,self.menu); + }).done(function(lessonLink) { + self.loadLesson(self.name); }); };