package org.owasp.webgoat.lessons; import org.owasp.webgoat.session.LessonTracker; import org.owasp.webgoat.session.RandomLessonTracker; import org.owasp.webgoat.session.WebSession; public abstract class RandomLessonAdapter extends LessonAdapter { public abstract String[] getStages(); public void setStage(WebSession s, String stage) { getLessonTracker(s).setStage(stage); } public String getStage(WebSession s) { return getLessonTracker(s).getStage(); } public void setStageComplete(WebSession s, String stage) { RandomLessonTracker lt = getLessonTracker(s); lt.setStageComplete(stage, true); if (lt.getCompleted()) { s.setMessage("Congratulations, you have completed this lab"); } else { s.setMessage("You have completed " + stage + "."); if (!stage.equals(lt.getStage())) s.setMessage(" Welcome to " + lt.getStage()); } } public boolean isStageComplete(WebSession s, String stage) { return getLessonTracker(s).hasCompleted(stage); } @Override public RandomLessonTracker getLessonTracker(WebSession s) { return (RandomLessonTracker) super.getLessonTracker(s); } @Override public RandomLessonTracker getLessonTracker(WebSession s, AbstractLesson lesson) { return (RandomLessonTracker) super.getLessonTracker(s, lesson); } @Override public RandomLessonTracker getLessonTracker(WebSession s, String userNameOverride) { return (RandomLessonTracker) super.getLessonTracker(s, userNameOverride); } @Override public LessonTracker createLessonTracker() { return new RandomLessonTracker(getStages()); } }