From 3fd7b34536dbf359762a8fc5314ca7699ca5acca Mon Sep 17 00:00:00 2001 From: Rick Lawson Date: Fri, 19 Sep 2014 21:06:46 -0400 Subject: [PATCH] more changes for showSource and showHints --- .../owasp/webgoat/lessons/AbstractLesson.java | 12 +++++++----- .../org/owasp/webgoat/service/BaseService.java | 3 +-- .../webgoat/service/LessonMenuService.java | 18 ++++++++++++++++-- .../org/owasp/webgoat/session/WebSession.java | 4 ++-- 4 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java b/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java index 4ae4469df..130b81ed5 100644 --- a/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java +++ b/src/main/java/org/owasp/webgoat/lessons/AbstractLesson.java @@ -60,8 +60,8 @@ import org.slf4j.LoggerFactory; * * Getting Source ============== * - * Source for this application is maintained at https://github.com/WebGoat/WebGoat, a repository - * for free software projects. + * Source for this application is maintained at + * https://github.com/WebGoat/WebGoat, a repository for free software projects. * * For details, please see http://webgoat.github.io * @@ -70,7 +70,7 @@ import org.slf4j.LoggerFactory; */ public abstract class AbstractLesson extends Screen implements Comparable { - final Logger logger = LoggerFactory.getLogger(AbstractLesson.class); + private static final Logger logger = LoggerFactory.getLogger(AbstractLesson.class); /** * Description of the Field @@ -612,6 +612,7 @@ public abstract class AbstractLesson extends Screen implements Comparable lessons = ws.getLessons(category); + String role = ws.getRole(); + logger.info("Role: " + role); for (AbstractLesson lesson : lessons) { LessonMenuItem lessonItem = new LessonMenuItem(); lessonItem.setName(lesson.getTitle()); @@ -80,13 +86,21 @@ public class LessonMenuService extends BaseService { if (lesson.isCompleted(ws)) { lessonItem.setComplete(true); } - if (ws.isAuthorizedInLesson(ws.getRole(), WebSession.SHOWHINTS)) { + + if (lesson.isAuthorized(ws, role, WebSession.SHOWHINTS)) { lessonItem.setShowHints(true); } - if (ws.isAuthorizedInLesson(ws.getRole(), WebSession.SHOWSOURCE)) { + if (lesson.isAuthorized(ws, role, WebSession.SHOWSOURCE)) { lessonItem.setShowSource(true); } + + // special handling for challenge role + if (Category.CHALLENGE.equals(lesson.getCategory())) { + lessonItem.setShowHints(lesson.isAuthorized(ws, AbstractLesson.CHALLENGE_ROLE, WebSession.SHOWHINTS)); + lessonItem.setShowSource(lesson.isAuthorized(ws, AbstractLesson.CHALLENGE_ROLE, WebSession.SHOWHINTS)); + } + categoryItem.addChild(lessonItem); // Does the lesson have stages if (lesson instanceof RandomLessonAdapter) { diff --git a/src/main/java/org/owasp/webgoat/session/WebSession.java b/src/main/java/org/owasp/webgoat/session/WebSession.java index 7bf0922f4..266f3f80c 100644 --- a/src/main/java/org/owasp/webgoat/session/WebSession.java +++ b/src/main/java/org/owasp/webgoat/session/WebSession.java @@ -75,12 +75,12 @@ public class WebSession { /** * Tomcat role for a webgoat user */ - public final static String WEBGOAT_USER = "webgoat_user"; + public final static String WEBGOAT_USER = "ROLE_WEBGOAT_USER"; /** * Tomcat role for a webgoat admin */ - public final static String WEBGOAT_ADMIN = "webgoat_admin"; + public final static String WEBGOAT_ADMIN = "ROLE_WEBGOAT_ADMIN"; /** * Description of the Field