diff --git a/app/public/panel/controllers/ApiCtrl.js b/app/public/panel/controllers/ApiCtrl.js index b728361..7700aca 100755 --- a/app/public/panel/controllers/ApiCtrl.js +++ b/app/public/panel/controllers/ApiCtrl.js @@ -1,57 +1,48 @@ var angular = require('angular'); angular.module('ApiCtrl', ['ApiSvc', 'AuthSvc']).controller('ApiController', ['$scope', 'ApiService', 'AuthService', function ($scope, ApiService, AuthService) { + // Transforms an array of period-separated properties ex. ["file.upload", "user.view", "user.ban"] + // to json ex. { "file": "upload", "user": ["view", "ban"] } function splitScope(scope) { var res = {}; for (var i in scope) { - var perm = scope[i]; - var prefix = perm.substr(0, perm.indexOf('.')); - var postfix = perm.substr(perm.indexOf('.') + 1); - if (!res[prefix]) res[prefix] = []; - res[prefix].push({name: postfix}); + if (scope.hasOwnProperty(i)) { + var perm = scope[i]; + var prefix = perm.substr(0, perm.indexOf('.')); + var postfix = perm.substr(perm.indexOf('.') + 1); + if (!res[prefix]) res[prefix] = []; + res[prefix].push({name: postfix}); + } } return res; } - $scope.checkCkPerm = function(prefix, perm) { - var index = $scope.scopeObj[prefix].indexOf(perm); - if ($scope.scopeObj[prefix][index].isChecked) { - $scope.ckScope.push(prefix + '.' + perm.name); - } else { - var index = $scope.ckScope.indexOf(prefix + '.' + perm.name); - $scope.ckScope.splice(index, 1); - } - }; - + // Called on init, retrieves the user's scope from the server. $scope.parseScope = function () { AuthService.currentUser(function (res) { $scope.scopeObj = splitScope(res.scope); - $scope.ckScope = []; + $scope.currKeyScope = []; }) }; + // Triggered when a checkbox for a permission changes. + // Updates the currKeyScope object with the addition or removal. + $scope.updateCurrKeyPerm = function(prefix, perm) { + var index = $scope.scopeObj[prefix].indexOf(perm); + if ($scope.scopeObj[prefix][index].isChecked) { + $scope.currKeyScope.push(prefix + '.' + perm.name); + } else { + index = $scope.currKeyScope.indexOf(prefix + '.' + perm.name); + $scope.currKeyScope.splice(index, 1); + } + }; + $scope.getKeys = function () { - ApiService.getAll(function (keys) { + ApiService.getAllKeys(function (keys) { $scope.keys = keys; }); }; - $scope.hideNewKey = function () { - $scope.nModalShow = false; - }; - $scope.showNewKey = function () { - $scope.nModalShow = true; - }; - - $scope.hideKeyInfo = function () { - $scope.kModalShow = false; - }; - $scope.showKeyInfo = function (key) { - $scope.kModalShow = true; - $scope.currKey = key; - $scope.currKey.scopeObj = splitScope($scope.currKey.scope); - }; - $scope.deleteKey = function (key) { ApiService.deleteKey(key, function () { var index = $scope.keys.indexOf(key); @@ -62,17 +53,35 @@ angular.module('ApiCtrl', ['ApiSvc', 'AuthSvc']).controller('ApiController', ['$ }; $scope.createKey = function () { - if ($scope.ckScope.length === 0 || !$scope.ckIdentifier) + if ($scope.currKeyScope.length === 0 || !$scope.currKeyIdentifier) return; ApiService.createKey({ - identifier: $scope.ckIdentifier, - scope: JSON.stringify($scope.ckScope) + identifier: $scope.currKeyIdentifier, + scope: JSON.stringify($scope.currKeyScope) }, function (res) { if (res.key) { $scope.hideNewKey(); $scope.getKeys(); } }); - } + }; + + // Hide/show new key modal dialog + $scope.hideNewKey = function () { + $scope.nModalShow = false; + }; + $scope.showNewKey = function () { + $scope.nModalShow = true; + }; + + // Hide/show key info modal dialog + $scope.hideKeyInfo = function () { + $scope.kModalShow = false; + }; + $scope.showKeyInfo = function (key) { + $scope.kModalShow = true; + $scope.currKey = key; + $scope.currKey.scopeObj = splitScope($scope.currKey.scope); + }; }]); \ No newline at end of file diff --git a/app/public/services/ApiSvc.js b/app/public/services/ApiSvc.js index fdf658e..a981f22 100755 --- a/app/public/services/ApiSvc.js +++ b/app/public/services/ApiSvc.js @@ -11,7 +11,7 @@ angular.module('ApiSvc', []).service('ApiService', ['$http', function ($http) { }); }; - this.getAll = function (cb) { + this.getAllKeys = function (cb) { $http({ method: 'GET', url: '/api/keys/get' diff --git a/public/views/panel/api.html b/public/views/panel/api.html index f8e937b..28811ee 100755 --- a/public/views/panel/api.html +++ b/public/views/panel/api.html @@ -54,14 +54,14 @@