diff --git a/webgoat-lessons/challenge/src/main/java/org/owasp/webgoat/plugin/Flag.java b/webgoat-lessons/challenge/src/main/java/org/owasp/webgoat/plugin/Flag.java index 6ac1a0e62..410d3df3f 100644 --- a/webgoat-lessons/challenge/src/main/java/org/owasp/webgoat/plugin/Flag.java +++ b/webgoat-lessons/challenge/src/main/java/org/owasp/webgoat/plugin/Flag.java @@ -1,11 +1,14 @@ package org.owasp.webgoat.plugin; import com.google.common.collect.Maps; +import lombok.AllArgsConstructor; +import lombok.Getter; import org.owasp.webgoat.assignments.Endpoint; import org.owasp.webgoat.session.UserTracker; import org.owasp.webgoat.session.WebSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @@ -28,6 +31,12 @@ public class Flag extends Endpoint { @Autowired private WebSession webSession; + @AllArgsConstructor + private class FlagPosted { + @Getter + private boolean lessonCompleted; + } + @PostConstruct public void initFlags() { IntStream.range(1, 4).forEach(i -> FLAGS.put(i, UUID.randomUUID().toString())); @@ -38,12 +47,14 @@ public class Flag extends Endpoint { return "challenge/flag"; } - @RequestMapping(method = RequestMethod.POST) + @RequestMapping(method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) @ResponseStatus(HttpStatus.OK) - public void postFlag(@RequestParam String flag, @RequestParam int challengeNumber) { + public void postFlag(@RequestParam String flag) { + String currentChallenge = webSession.getCurrentLesson().getName(); + int challengeNumber = Integer.valueOf(currentChallenge.substring(currentChallenge.length() - 1, currentChallenge.length())); String expectedFlag = FLAGS.get(challengeNumber); if (expectedFlag.equals(flag)) { - userTracker.assignmentSolved(webSession.getCurrentLesson(), "Challenge" + challengeNumber); + userTracker.assignmentSolved(webSession.getCurrentLesson(), "Assignment" + challengeNumber); } else { userTracker.assignmentFailed(webSession.getCurrentLesson()); } diff --git a/webgoat-lessons/challenge/src/main/java/org/owasp/webgoat/plugin/challenge3/CommentsEndpoint.java b/webgoat-lessons/challenge/src/main/java/org/owasp/webgoat/plugin/challenge3/CommentsEndpoint.java deleted file mode 100644 index afee36dac..000000000 --- a/webgoat-lessons/challenge/src/main/java/org/owasp/webgoat/plugin/challenge3/CommentsEndpoint.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.owasp.webgoat.plugin.challenge3; - -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author nbaars - * @since 4/8/17. - */ -@RestController -@RequestMapping("challenge-comments") -public class CommentsEndpoint { - -// -// private final WebSession webSession; -// -// public CommentsEndpoint(WebSession webSession) { -// this.webSession = webSession; -// -// } -// -// -// -// -// -// @PostMapping -// public Collection addComment(String comment) { -// String s = StringUtils.abbreviate(comment, 100); -// comments.add(new Comment(webSession.getUserName(), DateTime.now().toString(), s)); -// return comments; -// } - -} diff --git a/webgoat-lessons/challenge/src/main/resources/html/Challenge1.html b/webgoat-lessons/challenge/src/main/resources/html/Challenge1.html index 52559bfc2..91ca58ce2 100644 --- a/webgoat-lessons/challenge/src/main/resources/html/Challenge1.html +++ b/webgoat-lessons/challenge/src/main/resources/html/Challenge1.html @@ -32,18 +32,22 @@ -
+
-
+
+ +
- +
+
diff --git a/webgoat-lessons/challenge/src/main/resources/html/Challenge2.html b/webgoat-lessons/challenge/src/main/resources/html/Challenge2.html index 52b0b8de1..49b129a5c 100644 --- a/webgoat-lessons/challenge/src/main/resources/html/Challenge2.html +++ b/webgoat-lessons/challenge/src/main/resources/html/Challenge2.html @@ -85,19 +85,20 @@
-
-
-
-
-
- -
+ +
+
+
+
- - -
+
+ +
+
+ +
diff --git a/webgoat-lessons/challenge/src/main/resources/html/Challenge3.html b/webgoat-lessons/challenge/src/main/resources/html/Challenge3.html index aec09ac6b..2413f3c85 100644 --- a/webgoat-lessons/challenge/src/main/resources/html/Challenge3.html +++ b/webgoat-lessons/challenge/src/main/resources/html/Challenge3.html @@ -35,7 +35,7 @@
- +
+
+
+
+
+ +
+
+ +
+
+ +
+
diff --git a/webgoat-lessons/challenge/src/main/resources/html/Challenge4.html b/webgoat-lessons/challenge/src/main/resources/html/Challenge4.html index 8b7f8ddac..35918a7a8 100644 --- a/webgoat-lessons/challenge/src/main/resources/html/Challenge4.html +++ b/webgoat-lessons/challenge/src/main/resources/html/Challenge4.html @@ -85,19 +85,20 @@
-
-
-
-
-
- -
+ +
+
+
+
- - -
+
+ +
+
+ +
diff --git a/webgoat-lessons/challenge/src/main/resources/js/challenge3.js b/webgoat-lessons/challenge/src/main/resources/js/challenge3.js index 126edcd5f..6b7f4e042 100644 --- a/webgoat-lessons/challenge/src/main/resources/js/challenge3.js +++ b/webgoat-lessons/challenge/src/main/resources/js/challenge3.js @@ -4,10 +4,15 @@ $(document).ready(function () { $.ajax({ type: 'POST', url: 'challenge/3', - data: JSON.stringify ({comment: commentInput}), + data: JSON.stringify({comment: commentInput}), contentType: "application/json", dataType: 'json' - }); + }).then( + function () { + getChallenges(); + $("#commentInput").val(''); + } + ) }) var html = '
  • ' + @@ -23,13 +28,18 @@ $(document).ready(function () { '
  • ' + ''; - $.get("challenge/3", function (result, status) { - for (var i = 0; i < result.length; i++) { - var comment = html.replace('USER', result[i].user); - comment = comment.replace('DATETIME', result[i].dateTime); - comment = comment.replace('COMMENT', result[i].comment); - $("#list").append(comment); - } + getChallenges(); - }); + function getChallenges() { + $("#list").empty(); + $.get("challenge/3", function (result, status) { + for (var i = 0; i < result.length; i++) { + var comment = html.replace('USER', result[i].user); + comment = comment.replace('DATETIME', result[i].dateTime); + comment = comment.replace('COMMENT', result[i].comment); + $("#list").append(comment); + } + + }); + } }) \ No newline at end of file