From ba9b60a99c54d25f8bfe3ef7b2b563654693b1a5 Mon Sep 17 00:00:00 2001 From: lawson89 Date: Fri, 11 Jul 2014 14:58:27 -0400 Subject: [PATCH] add links and fix titles to lesson menu service add list of built in accounts to login screen --- .../webgoat/lessons/model/LessonMenuItem.java | 105 ++++++++++++++++++ .../lessons/model/LessonMenuItemType.java | 17 +++ .../owasp/webgoat/service/HintService.java | 1 - .../webgoat/service/LessonMenuService.java | 15 ++- webapp/WEB-INF/pages/login.jsp | 19 ++++ 5 files changed, 152 insertions(+), 5 deletions(-) create mode 100644 java/org/owasp/webgoat/lessons/model/LessonMenuItem.java create mode 100644 java/org/owasp/webgoat/lessons/model/LessonMenuItemType.java diff --git a/java/org/owasp/webgoat/lessons/model/LessonMenuItem.java b/java/org/owasp/webgoat/lessons/model/LessonMenuItem.java new file mode 100644 index 000000000..3d6b7a15a --- /dev/null +++ b/java/org/owasp/webgoat/lessons/model/LessonMenuItem.java @@ -0,0 +1,105 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.owasp.webgoat.lessons.model; + +import java.util.ArrayList; +import java.util.List; + +/** + * + * @author rlawson + */ +public class LessonMenuItem { + + private String name; + private LessonMenuItemType type; + private List children = new ArrayList(); + private boolean complete; + private String link; + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the children + */ + public List getChildren() { + return children; + } + + /** + * @param children the children to set + */ + public void setChildren(List children) { + this.children = children; + } + + /** + * @return the type + */ + public LessonMenuItemType getType() { + return type; + } + + /** + * @param type the type to set + */ + public void setType(LessonMenuItemType type) { + this.type = type; + } + + public void addChild(LessonMenuItem child) { + children.add(child); + } + + @Override + public String toString() { + StringBuilder bldr = new StringBuilder(); + bldr.append("Name: ").append(name).append(" | "); + bldr.append("Type: ").append(type).append(" | "); + return bldr.toString(); + } + + /** + * @return the complete + */ + public boolean isComplete() { + return complete; + } + + /** + * @param complete the complete to set + */ + public void setComplete(boolean complete) { + this.complete = complete; + } + + /** + * @return the link + */ + public String getLink() { + return link; + } + + /** + * @param link the link to set + */ + public void setLink(String link) { + this.link = link; + } + +} diff --git a/java/org/owasp/webgoat/lessons/model/LessonMenuItemType.java b/java/org/owasp/webgoat/lessons/model/LessonMenuItemType.java new file mode 100644 index 000000000..7d34d14c8 --- /dev/null +++ b/java/org/owasp/webgoat/lessons/model/LessonMenuItemType.java @@ -0,0 +1,17 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ + +package org.owasp.webgoat.lessons.model; + +/** + * + * @author rlawson + */ +public enum LessonMenuItemType { + CATEGORY, + LESSON, + STAGE +} diff --git a/java/org/owasp/webgoat/service/HintService.java b/java/org/owasp/webgoat/service/HintService.java index 81544657b..a8ca2a719 100644 --- a/java/org/owasp/webgoat/service/HintService.java +++ b/java/org/owasp/webgoat/service/HintService.java @@ -10,7 +10,6 @@ import java.util.List; import javax.servlet.http.HttpSession; import org.owasp.webgoat.lessons.AbstractLesson; import org.owasp.webgoat.lessons.model.Hint; -import org.owasp.webgoat.session.Course; import org.owasp.webgoat.session.WebSession; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/java/org/owasp/webgoat/service/LessonMenuService.java b/java/org/owasp/webgoat/service/LessonMenuService.java index 79fa6c33e..1f379442f 100644 --- a/java/org/owasp/webgoat/service/LessonMenuService.java +++ b/java/org/owasp/webgoat/service/LessonMenuService.java @@ -47,7 +47,7 @@ public class LessonMenuService extends BaseService { // Get the categories, these are the main menu items Course course = ((Course) session.getAttribute("course")); List categories = course.getCategories(); - + for (Category category : categories) { LessonMenuItem categoryItem = new LessonMenuItem(); categoryItem.setName(category.getName()); @@ -56,7 +56,8 @@ public class LessonMenuService extends BaseService { List lessons = ws.getLessons(category); for (AbstractLesson lesson : lessons) { LessonMenuItem lessonItem = new LessonMenuItem(); - lessonItem.setName(lesson.getName()); + lessonItem.setName(lesson.getTitle()); + lessonItem.setLink(lesson.getLink()); lessonItem.setType(LessonMenuItemType.LESSON); if (lesson.isCompleted(ws)) { lessonItem.setComplete(true); @@ -67,14 +68,20 @@ public class LessonMenuService extends BaseService { RandomLessonAdapter rla = (RandomLessonAdapter) lesson; String[] stages = rla.getStages(); if (stages != null) { + String lessonLink = lesson.getLink(); + int stageIdx = 1; for (String stage : stages) { LessonMenuItem stageItem = new LessonMenuItem(); - stageItem.setName(stage); + stageItem.setName("Stage " + stageIdx + ": " + stage); + // build the link for the stage + String stageLink = lessonLink + "&stage=" + stageIdx; + stageItem.setLink(stageLink); stageItem.setType(LessonMenuItemType.STAGE); if (rla.isStageComplete(ws, stage)) { stageItem.setComplete(true); } lessonItem.addChild(stageItem); + stageIdx++; } } } @@ -82,6 +89,6 @@ public class LessonMenuService extends BaseService { menu.add(categoryItem); } return menu; - + } } diff --git a/webapp/WEB-INF/pages/login.jsp b/webapp/WEB-INF/pages/login.jsp index 18516f4c7..d2bffa3c5 100644 --- a/webapp/WEB-INF/pages/login.jsp +++ b/webapp/WEB-INF/pages/login.jsp @@ -57,7 +57,26 @@ value="${_csrf.token}" /> +
+
+ Logon with one of the following accounts +
+
+ + + + + + + + + + +
AccountUserPassword
Webgoat Userguestguest
Webgoat Adminwebgoatwebgoat
Server Adminserverserver
+ +
+