111 lines
3.3 KiB
JavaScript
111 lines
3.3 KiB
JavaScript
define(['jquery',
|
|
'underscore',
|
|
'backbone',
|
|
'goatApp/controller/LessonController',
|
|
'goatApp/controller/MenuController',
|
|
'goatApp/view/LessonContentView',
|
|
'goatApp/view/MenuView',
|
|
'goatApp/view/DeveloperControlsView'
|
|
], function ($,
|
|
_,
|
|
Backbone,
|
|
LessonController,
|
|
MenuController,
|
|
LessonContentView,
|
|
MenuView,
|
|
DeveloperControlsView) {
|
|
|
|
var lessonContentView = new LessonContentView();
|
|
var menuView = new MenuView();
|
|
var developerControlsView = new DeveloperControlsView();
|
|
|
|
var GoatAppRouter = Backbone.Router.extend({
|
|
routes: {
|
|
'welcome':'welcomeRoute',
|
|
'lesson/:name':'lessonRoute',
|
|
'lesson/:name/:pageNum':'lessonPageRoute',
|
|
'test/:param':'testRoute'
|
|
},
|
|
|
|
|
|
lessonController: new LessonController({
|
|
lessonContentView: lessonContentView
|
|
}),
|
|
|
|
menuController: new MenuController({
|
|
menuView: menuView
|
|
}),
|
|
|
|
|
|
setUpCustomJS: function () {
|
|
webgoat.customjs.jquery = $; //passing jquery into custom js scope ... still klunky, but works for now
|
|
|
|
// temporary shim to support dom-xss lesson
|
|
webgoat.customjs.phoneHome = function (e) {
|
|
console.log('phoneHome invoked');
|
|
console.log(arguments.callee);
|
|
//
|
|
webgoat.customjs.jquery.ajax({
|
|
method:"POST",
|
|
url:"/WebGoat/CrossSiteScripting/dom-xss",
|
|
data:{param1:42,param2:24},
|
|
headers:{
|
|
"webgoat-requested-by":"dom-xss-vuln"
|
|
},
|
|
contentType:'application/x-www-form-urlencoded; charset=UTF-8'
|
|
});
|
|
}
|
|
},
|
|
|
|
init:function() {
|
|
goatRouter = new GoatAppRouter();
|
|
this.lessonController.start();
|
|
// this.menuController.initMenu();
|
|
webgoat = {};
|
|
webgoat.customjs = {};
|
|
|
|
this.setUpCustomJS();
|
|
|
|
|
|
goatRouter.on('route:lessonRoute', function(name) {
|
|
this.lessonController.loadLesson(name,0);
|
|
//TODO - update menu code from below
|
|
this.menuController.updateMenu(name);
|
|
});
|
|
|
|
goatRouter.on('route:lessonPageRoute', function(name,pageNum) {
|
|
pageNum = (_.isNumber(parseInt(pageNum))) ? parseInt(pageNum) : 0;
|
|
this.lessonController.loadLesson(name,pageNum);
|
|
//TODO - update menu code from below
|
|
this.menuController.updateMenu(name);
|
|
});
|
|
|
|
goatRouter.on('route:welcomeRoute', function() {
|
|
this.lessonController.loadWelcome();
|
|
});
|
|
|
|
goatRouter.on('route:welcomeRoute', function() {
|
|
this.lessonController.loadWelcome();
|
|
});
|
|
|
|
goatRouter.on('route:testRoute', function(param) {
|
|
this.lessonController.testHandler(param);
|
|
});
|
|
|
|
goatRouter.on("route", function(route, params) {});
|
|
|
|
Backbone.history.start();
|
|
this.listenTo(this.lessonController, 'menu:reload',this.reloadMenu)
|
|
},
|
|
|
|
reloadMenu: function (curLesson) {
|
|
this.menuController.updateMenu();
|
|
}
|
|
|
|
|
|
});
|
|
|
|
return GoatAppRouter;
|
|
|
|
});
|