diff --git a/web/js/easyctf.js b/web/js/easyctf.js index ea35dd5..10b117a 100644 --- a/web/js/easyctf.js +++ b/web/js/easyctf.js @@ -1,251 +1,251 @@ var app = angular.module("easyctf", [ "ngRoute" ]); app.config(["$compileProvider", function($compileProvider) { - $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|javascript):/); + $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|javascript):/); }]); app.config(function($routeProvider, $locationProvider) { - $routeProvider.when("/", { - templateUrl: "pages/home.html", - controller: "mainController" - }) - .when("/about", { - templateUrl: "pages/about.html", - controller: "mainController" - }) - .when("/chat", { - templateUrl: "pages/chat.html", - controller: "mainController" - }) - .when("/learn", { - templateUrl: "pages/learn.html", - controller: "mainController" - }) - .when("/login", { - templateUrl: "pages/login.html", - controller: "mainController" - }) - .when("/logout", { - templateUrl: "pages/blank.html", - controller: "logoutController" - }) - .when("/profile", { - templateUrl: "pages/profile.html", - controller: "profileController" - }) - .when("/profile/:username", { - templateUrl: "pages/profile.html", - controller: "profileController" - }) - .when("/register", { - templateUrl: "pages/register.html", - controller: "mainController" - }) - .when("/scoreboard", { - templateUrl: "pages/scoreboard.html", - controller: "scoreboardController" - }) - .when("/settings", { - templateUrl: "pages/settings.html", - controller: "mainController" - }) - .when("/forgot", { - templateUrl: "pages/forgot.html", - controller: "resetController" - }) - .when("/forgot/:token", { - templateUrl: "pages/forgot.html", - controller: "resetController" - }) - .when("/team", { - templateUrl: "pages/team.html", - controller: "teamController" - }) - .when("/team/:teamname", { - templateUrl: "pages/team.html", - controller: "teamController" - }) - .when("/admin/problems", { - templateUrl: "pages/admin/problems.html", - controller: "adminProblemsController" - }) - .otherwise({ - templateUrl: "pages/404.html", - controller: "mainController" - }); - $locationProvider.html5Mode(true); + $routeProvider.when("/", { + templateUrl: "pages/home.html", + controller: "mainController" + }) + .when("/about", { + templateUrl: "pages/about.html", + controller: "mainController" + }) + .when("/chat", { + templateUrl: "pages/chat.html", + controller: "mainController" + }) + .when("/learn", { + templateUrl: "pages/learn.html", + controller: "mainController" + }) + .when("/login", { + templateUrl: "pages/login.html", + controller: "mainController" + }) + .when("/logout", { + templateUrl: "pages/blank.html", + controller: "logoutController" + }) + .when("/profile", { + templateUrl: "pages/profile.html", + controller: "profileController" + }) + .when("/profile/:username", { + templateUrl: "pages/profile.html", + controller: "profileController" + }) + .when("/register", { + templateUrl: "pages/register.html", + controller: "mainController" + }) + .when("/scoreboard", { + templateUrl: "pages/scoreboard.html", + controller: "scoreboardController" + }) + .when("/settings", { + templateUrl: "pages/settings.html", + controller: "mainController" + }) + .when("/forgot", { + templateUrl: "pages/forgot.html", + controller: "resetController" + }) + .when("/forgot/:token", { + templateUrl: "pages/forgot.html", + controller: "resetController" + }) + .when("/team", { + templateUrl: "pages/team.html", + controller: "teamController" + }) + .when("/team/:teamname", { + templateUrl: "pages/team.html", + controller: "teamController" + }) + .when("/admin/problems", { + templateUrl: "pages/admin/problems.html", + controller: "adminProblemsController" + }) + .otherwise({ + templateUrl: "pages/404.html", + controller: "mainController" + }); + $locationProvider.html5Mode(true); }); app.controller("mainController", ["$scope", "$http", function($scope, $http) { - $scope.config = { navbar: { } }; - $.get("/api/user/status", function(result) { - if (result["success"] == 1) { - delete result["success"]; - $scope.config.navbar = result; - $scope.$emit("loginStatus"); - } else { - $scope.config.navbar.logged_in = false; - } - $scope.$apply(); - }).fail(function() { - $scope.config.navbar.logged_in = false; - $scope.$apply(); - }); + $scope.config = { navbar: { } }; + $.get("/api/user/status", function(result) { + if (result["success"] == 1) { + delete result["success"]; + $scope.config.navbar = result; + $scope.$emit("loginStatus"); + } else { + $scope.config.navbar.logged_in = false; + } + $scope.$apply(); + }).fail(function() { + $scope.config.navbar.logged_in = false; + $scope.$apply(); + }); }]); app.controller("logoutController", function() { - $.get("/api/user/logout", function(result) { - location.href = "/"; - }); + $.get("/api/user/logout", function(result) { + location.href = "/"; + }); }); app.controller("profileController", ["$controller", "$scope", "$http", "$routeParams", function($controller, $scope, $http, $routeParams) { - var data = { }; - if ("username" in $routeParams) data["username"] = $routeParams["username"]; - $controller("mainController", { $scope: $scope }); - $.get("/api/user/info", data, function(result) { - if (result["success"] == 1) { - $scope.user = result["user"]; - } - $scope.$apply(); - $(".timeago").timeago(); - }); + var data = { }; + if ("username" in $routeParams) data["username"] = $routeParams["username"]; + $controller("mainController", { $scope: $scope }); + $.get("/api/user/info", data, function(result) { + if (result["success"] == 1) { + $scope.user = result["user"]; + } + $scope.$apply(); + $(".timeago").timeago(); + }); }]); app.controller("loginController", ["$controller", "$scope", "$http", function($controller, $scope, $http) { - $controller("mainController", { $scope: $scope }); - $scope.$on("loginStatus", function() { - if ($scope.config["navbar"].logged_in != true) { - location.href = "/login"; - return; - } - }); + $controller("mainController", { $scope: $scope }); + $scope.$on("loginStatus", function() { + if ($scope.config["navbar"].logged_in != true) { + location.href = "/login"; + return; + } + }); }]); app.controller("teamController", ["$controller", "$scope", "$http", "$routeParams", function($controller, $scope, $http, $routeParams) { - var data = { }; - if ("teamname" in $routeParams) { - data["teamname"] = $routeParams["teamname"]; - } else { - $controller("loginController", { $scope: $scope }); - } - $.get("/api/team/info", data, function(result) { - if (result["success"] == 1) { - $scope.team = result["team"]; - } - $scope.$apply(); - $(".timeago").timeago(); - }); + var data = { }; + if ("teamname" in $routeParams) { + data["teamname"] = $routeParams["teamname"]; + } else { + $controller("loginController", { $scope: $scope }); + } + $.get("/api/team/info", data, function(result) { + if (result["success"] == 1) { + $scope.team = result["team"]; + } + $scope.$apply(); + $(".timeago").timeago(); + }); }]); app.controller("scoreboardController", ["$controller", "$scope", "$http", function($controller, $scope, $http) { - $controller("mainController", { $scope: $scope }); - api_call("GET", "/api/stats/scoreboard", { }, function(result) { - if (result["success"] == 1) { - $scope.scoreboard = result["scoreboard"]; - $scope.$apply(); - } - }); + $controller("mainController", { $scope: $scope }); + api_call("GET", "/api/stats/scoreboard", { }, function(result) { + if (result["success"] == 1) { + $scope.scoreboard = result["scoreboard"]; + $scope.$apply(); + } + }); }]); app.controller("resetController", ["$controller", "$scope", "$http", "$routeParams", function($controller, $scope, $http, $routeParams) { - var data = { }; + var data = { }; $scope.token = false; data["csrf_token"] = $.cookie("csrf_token"); - if ("token" in $routeParams) { + if ("token" in $routeParams) { $scope.token = true; - token = $routeParams["token"]; - $.get("/api/user/forgot/" + token, data, function(data) { + token = $routeParams["token"]; + $.get("/api/user/forgot/" + token, data, function(data) { $scope.body = data["message"]; $scope.success = data["success"] - $scope.$apply(); - }); - } else { - $controller("mainController", { $scope: $scope }); - } + $scope.$apply(); + }); + } else { + $controller("mainController", { $scope: $scope }); + } }]); app.controller("adminController", ["$controller", "$scope", "$http", function($controller, $scope, $http) { - $controller("mainController", { $scope: $scope }); - $scope.$on("loginStatus", function() { - if ($scope.config["navbar"].logged_in != true) { - location.href = "/login"; - return; - } - if ($scope.config["navbar"].admin != true) { - location.href = "/profile"; - return; - } - }); + $controller("mainController", { $scope: $scope }); + $scope.$on("loginStatus", function() { + if ($scope.config["navbar"].logged_in != true) { + location.href = "/login"; + return; + } + if ($scope.config["navbar"].admin != true) { + location.href = "/profile"; + return; + } + }); }]); app.controller("adminProblemsController", ["$controller", "$scope", "$http", function($controller, $scope, $http) { - $controller("adminController", { $scope: $scope }); - $.get("/api/admin/problems/list", function(result) { - if (result["success"] == 1) { - $scope.problems = result["problems"]; - } - $scope.$apply(); - }); + $controller("adminController", { $scope: $scope }); + $.get("/api/admin/problems/list", function(result) { + if (result["success"] == 1) { + $scope.problems = result["problems"]; + } + $scope.$apply(); + }); }]); function display_message(containerId, alertType, message, callback) { - $("#" + containerId).html("
" + message + "
"); - $("#" + containerId).hide().slideDown("fast", "swing", function() { - window.setTimeout(function () { - $("#" + containerId).slideUp("fast", "swing", callback); - }, message.length * 75); - }); + $("#" + containerId).html("
" + message + "
"); + $("#" + containerId).hide().slideDown("fast", "swing", function() { + window.setTimeout(function () { + $("#" + containerId).slideUp("fast", "swing", callback); + }, message.length * 75); + }); }; function api_call(method, url, data, callback_success, callback_fail) { - if (method.toLowerCase() == "post") { - data["csrf_token"] = $.cookie("csrf_token"); - } - $.ajax({ - "type": method, - "datatype": "json", - "data": data, - "url": url - }).done(callback_success).fail(callback_fail); + if (method.toLowerCase() == "post") { + data["csrf_token"] = $.cookie("csrf_token"); + } + $.ajax({ + "type": method, + "datatype": "json", + "data": data, + "url": url + }).done(callback_success).fail(callback_fail); } $.fn.serializeObject = function() { - var a, o; - o = {}; - a = this.serializeArray(); - $.each(a, function() { - if (o[this.name]) { - if (!o[this.name].push) { - o[this.name] = [o[this.name]]; - } - return o[this.name].push(this.value || ""); - } else { - return o[this.name] = this.value || ""; - } - }); - return o; + var a, o; + o = {}; + a = this.serializeArray(); + $.each(a, function() { + if (o[this.name]) { + if (!o[this.name].push) { + o[this.name] = [o[this.name]]; + } + return o[this.name].push(this.value || ""); + } else { + return o[this.name] = this.value || ""; + } + }); + return o; }; // register page var register_form = function() { - var input = "#register_form input"; - var data = $("#register_form").serializeObject(); - $(input).attr("disabled", "disabled"); - api_call("POST", "/api/user/register", data, function(result) { - if (result["success"] == 1) { - location.href = "/profile"; - } else { - display_message("register_msg", "danger", result["message"], function() { - $(input).removeAttr("disabled"); - }); - } - }).fail(function(jqXHR, status, error) { - var result = JSON.parse(jqXHR["responseText"]); - display_message("register_msg", "danger", "Error " + jqXHR["status"] + ": " + result["message"], function() { - $(input).removeAttr("disabled"); - }); - }); + var input = "#register_form input"; + var data = $("#register_form").serializeObject(); + $(input).attr("disabled", "disabled"); + api_call("POST", "/api/user/register", data, function(result) { + if (result["success"] == 1) { + location.href = "/profile"; + } else { + display_message("register_msg", "danger", result["message"], function() { + $(input).removeAttr("disabled"); + }); + } + }, function(jqXHR, status, error) { + var result = jqXHR["responseText"]; + display_message("register_msg", "danger", "Failed to connect to the API.", function() { + button.removeAttr("disabled"); + }); + }); }; // password reset @@ -260,11 +260,11 @@ var request_reset_form = function() { $(input).removeAttr("disabled"); }); } - }).fail(function(jqXHR, status, error) { - var result = JSON.parse(jqXHR["responseText"]); - display_message("reset_msg", "danger", "Error " + jqXHR["status"] + ": " + result["message"], function() { - $(input).removeAttr("disabled"); - }); + }, function(jqXHR, status, error) { + var result = jqXHR["responseText"]; + display_message("reset_msg", "danger", "Failed to connect to the API.", function() { + button.removeAttr("disabled"); + }); }); } @@ -284,92 +284,92 @@ var reset_form = function() { $(input).removeAttr("disabled"); }); } - }).fail(function(jqXHR, status, error) { - var result = JSON.parse(jqXHR["responseText"]); - display_message("reset_msg", "danger", "Error " + jqXHR["status"] + ": " + result["message"], function() { - $(input).removeAttr("disabled"); - }); + }, function(jqXHR, status, error) { + var result = jqXHR["responseText"]; + display_message("reset_msg", "danger", "Failed to connect to the API.", function() { + button.removeAttr("disabled"); + }); }); } // login page var login_form = function() { - var input = "#login_form input"; - var data = $("#login_form").serializeObject(); - $(input).attr("disabled", "disabled"); - api_call("POST", "/api/user/login", data, function(result) { - if (result["success"] == 1) { - location.href = "/profile"; - } else { - display_message("login_msg", "danger", result["message"], function() { - $(input).removeAttr("disabled"); - }); - } - }).fail(function(jqXHR, status, error) { - var result = JSON.parse(jqXHR["responseText"]); - display_message("login_msg", "danger", "Error " + jqXHR["status"] + ": " + result["message"], function() { - $(input).removeAttr("disabled"); - }); - }); + var input = "#login_form input"; + var data = $("#login_form").serializeObject(); + $(input).attr("disabled", "disabled"); + api_call("POST", "/api/user/login", data, function(result) { + if (result["success"] == 1) { + location.href = "/profile"; + } else { + display_message("login_msg", "danger", result["message"], function() { + $(input).removeAttr("disabled"); + }); + } + }, function(jqXHR, status, error) { + var result = jqXHR["responseText"]; + display_message("login_msg", "danger", "Failed to connect to the API.", function() { + button.removeAttr("disabled"); + }); + }); }; // team page var create_team = function() { - var input = "#create_team input"; - var data = $("#create_team").serializeObject(); - $(input).attr("disabled", "disabled"); - api_call("POST", "/api/team/create", data, function(result) { - if (result["success"] == 1) { - location.reload(true); - } else { - display_message("create_team_msg", "danger", result["message"], function() { - $(input).removeAttr("disabled"); - }); - } - }).fail(function(jqXHR, status, error) { - var result = JSON.parse(jqXHR["responseText"]); - display_message("create_team_msg", "danger", "Error " + jqXHR["status"] + ": " + result["message"], function() { - $(input).removeAttr("disabled"); - }); - }); + var input = "#create_team input"; + var data = $("#create_team").serializeObject(); + $(input).attr("disabled", "disabled"); + api_call("POST", "/api/team/create", data, function(result) { + if (result["success"] == 1) { + location.reload(true); + } else { + display_message("create_team_msg", "danger", result["message"], function() { + $(input).removeAttr("disabled"); + }); + } + }, function(jqXHR, status, error) { + var result = jqXHR["responseText"]; + display_message("create_team_msg", "danger", "Failed to connect to the API.", function() { + button.removeAttr("disabled"); + }); + }); }; var add_member = function() { - var input = "#add_member input"; - var data = $("#add_member").serializeObject(); - $(input).attr("disabled", "disabled"); - api_call("POST", "/api/team/invite", data, function(result) { - if (result["success"] == 1) { - location.reload(true); - } else { - $(input).removeAttr("disabled"); - } - }).fail(function(jqXHR, status, error) { - var result = JSON.parse(jqXHR["responseText"]); - display_message("create_team_msg", "danger", "Error " + jqXHR["status"] + ": " + result["message"], function() { - $(input).removeAttr("disabled"); - }); - }); + var input = "#add_member input"; + var data = $("#add_member").serializeObject(); + $(input).attr("disabled", "disabled"); + api_call("POST", "/api/team/invite", data, function(result) { + if (result["success"] == 1) { + location.reload(true); + } else { + $(input).removeAttr("disabled"); + } + }, function(jqXHR, status, error) { + var result = JSON.parse(jqXHR["responseText"]); + display_message("create_team_msg", "danger", "Error " + jqXHR["status"] + ": " + result["message"], function() { + $(input).removeAttr("disabled"); + }); + }); }; var rescind_invitation = function(uid) { - var input = "#add_member input"; - var data = { "uid": uid }; - api_call("POST", "/api/team/invite/rescind", data, function(result) { - if (result["success"] == 1) { - location.reload(true); - } - }); + var input = "#add_member input"; + var data = { "uid": uid }; + api_call("POST", "/api/team/invite/rescind", data, function(result) { + if (result["success"] == 1) { + location.reload(true); + } + }); }; var request_invitation = function(tid) { - var input = "#add_member input"; - var data = { "tid": tid }; - api_call("POST", "/api/team/invite/request", data, function(result) { - if (result["success"] == 1) { - location.reload(true); - } - }); + var input = "#add_member input"; + var data = { "tid": tid }; + api_call("POST", "/api/team/invite/request", data, function(result) { + if (result["success"] == 1) { + location.reload(true); + } + }); };