Skip to content
Snippets Groups Projects
Commit 4bce0ed8 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

configuration tab is disabled when user has no access

parent 2d8d6c8a
No related branches found
No related tags found
1 merge request!333Resolve "User privileges"
Pipeline #
...@@ -107,7 +107,7 @@ Configuration.prototype.getOption = function (type) { ...@@ -107,7 +107,7 @@ Configuration.prototype.getOption = function (type) {
/** /**
* *
* @returns {Array} * @returns {ConfigurationOption[]}
*/ */
Configuration.prototype.getOptions = function () { Configuration.prototype.getOptions = function () {
var self = this; var self = this;
......
...@@ -115,17 +115,28 @@ ConfigurationAdminPanel.prototype._createGui = function () { ...@@ -115,17 +115,28 @@ ConfigurationAdminPanel.prototype._createGui = function () {
}); });
}; };
/**
*
* @returns {Promise}
*/
ConfigurationAdminPanel.prototype.init = function () { ConfigurationAdminPanel.prototype.init = function () {
var self = this; var self = this;
var user; return self.getServerConnector().getLoggedUser().then(function (user) {
return ServerConnector.getLoggedUser().then(function (result) {
user = result;
var configuration = self.getConfiguration(); var configuration = self.getConfiguration();
var privilege = configuration.getPrivilegeType(PrivilegeType.CONFIGURATION_MANAGE); var privilege = configuration.getPrivilegeType(PrivilegeType.CONFIGURATION_MANAGE);
self.setOptions(configuration.getOptions(), user.hasPrivilege(privilege)); if (user.hasPrivilege(privilege)) {
self.setOptions(configuration.getOptions(), true);
} else {
self.disablePanel("You have no privilege to manage configuration");
}
}); });
}; };
/**
*
* @param {ConfigurationOption[]} options
* @param {boolean} editable
*/
ConfigurationAdminPanel.prototype.setOptions = function (options, editable) { ConfigurationAdminPanel.prototype.setOptions = function (options, editable) {
var self = this; var self = this;
var dataTable = $("[name='configurationTable']", self.getElement()).DataTable(); var dataTable = $("[name='configurationTable']", self.getElement()).DataTable();
...@@ -155,6 +166,12 @@ ConfigurationAdminPanel.prototype.setOptions = function (options, editable) { ...@@ -155,6 +166,12 @@ ConfigurationAdminPanel.prototype.setOptions = function (options, editable) {
dataTable.clear().rows.add(data).draw(); dataTable.clear().rows.add(data).draw();
}; };
/**
*
* @param {ConfigurationOption} option
* @param {boolean} editable
* @returns {Array}
*/
ConfigurationAdminPanel.prototype.optionToTableRow = function (option, editable) { ConfigurationAdminPanel.prototype.optionToTableRow = function (option, editable) {
var value = option.getValue(); var value = option.getValue();
var row = []; var row = [];
...@@ -186,7 +203,7 @@ ConfigurationAdminPanel.prototype.optionToTableRow = function (option, editable) ...@@ -186,7 +203,7 @@ ConfigurationAdminPanel.prototype.optionToTableRow = function (option, editable)
"</div>"; "</div>";
} else { } else {
logger.warn("Don't know how to handle: " + option.getValueType()); logger.warn("Don't know how to handle: " + option.getValueType());
editOption = "<input name='edit-" + option.getType() + "' value='" + value + "'readonly/>"; editOption = "<input name='edit-" + option.getType() + "' value='" + value + "' readonly/>";
} }
var group = option.getGroup(); var group = option.getGroup();
if (group === undefined) { if (group === undefined) {
...@@ -201,7 +218,7 @@ ConfigurationAdminPanel.prototype.optionToTableRow = function (option, editable) ...@@ -201,7 +218,7 @@ ConfigurationAdminPanel.prototype.optionToTableRow = function (option, editable)
ConfigurationAdminPanel.prototype.saveOption = function (type) { ConfigurationAdminPanel.prototype.saveOption = function (type) {
var self = this; var self = this;
return ServerConnector.getConfiguration().then(function (configuration) { return self.getServerConnector().getConfiguration().then(function (configuration) {
var option = configuration.getOption(type); var option = configuration.getOption(type);
var element = $("[name='edit-" + type + "']", self.getElement()); var element = $("[name='edit-" + type + "']", self.getElement());
var value; var value;
...@@ -215,7 +232,7 @@ ConfigurationAdminPanel.prototype.saveOption = function (type) { ...@@ -215,7 +232,7 @@ ConfigurationAdminPanel.prototype.saveOption = function (type) {
value = element.val(); value = element.val();
} }
option.setValue(value); option.setValue(value);
return ServerConnector.updateConfigurationOption(option); return self.getServerConnector().updateConfigurationOption(option);
}); });
}; };
ConfigurationAdminPanel.prototype.destroy = function () { ConfigurationAdminPanel.prototype.destroy = function () {
......
...@@ -10,6 +10,14 @@ var logger = require('../../logger'); ...@@ -10,6 +10,14 @@ var logger = require('../../logger');
var chai = require('chai'); var chai = require('chai');
var assert = chai.assert; var assert = chai.assert;
function createConfigurationTab(configuration) {
return new ConfigurationAdminPanel({
element: testDiv,
configuration: configuration,
serverConnector: ServerConnector
});
}
describe('ConfigurationAdminPanel', function () { describe('ConfigurationAdminPanel', function () {
describe('init', function () { describe('init', function () {
...@@ -17,13 +25,11 @@ describe('ConfigurationAdminPanel', function () { ...@@ -17,13 +25,11 @@ describe('ConfigurationAdminPanel', function () {
helper.loginAsAdmin(); helper.loginAsAdmin();
var mapTab; var mapTab;
return ServerConnector.getConfiguration().then(function (configuration) { return ServerConnector.getConfiguration().then(function (configuration) {
mapTab = new ConfigurationAdminPanel({ mapTab = createConfigurationTab(configuration);
element: testDiv,
configuration: configuration
});
return mapTab.init(); return mapTab.init();
}).then(function () { }).then(function () {
assert.equal(0, logger.getWarnings().length); assert.equal(0, logger.getWarnings().length);
assert.ok($("[name='saveOption']", testDiv).length > 0);
assert.notOk($("[name='saveOption']", testDiv).prop('disabled')); assert.notOk($("[name='saveOption']", testDiv).prop('disabled'));
return mapTab.destroy(); return mapTab.destroy();
}); });
...@@ -32,25 +38,20 @@ describe('ConfigurationAdminPanel', function () { ...@@ -32,25 +38,20 @@ describe('ConfigurationAdminPanel', function () {
helper.loginWithoutAccess(); helper.loginWithoutAccess();
var mapTab; var mapTab;
return ServerConnector.getConfiguration().then(function (configuration) { return ServerConnector.getConfiguration().then(function (configuration) {
mapTab = new ConfigurationAdminPanel({ mapTab = createConfigurationTab(configuration);
element: testDiv,
configuration: configuration
});
return mapTab.init(); return mapTab.init();
}).then(function () { }).then(function () {
assert.equal(0, logger.getWarnings().length); assert.equal(0, logger.getWarnings().length);
assert.ok($("[name='saveOption']", testDiv).prop('disabled')); assert.equal($("[name='saveOption']", testDiv).length, 0);
return mapTab.destroy(); return mapTab.destroy();
}); });
}); });
}); });
it('saveOption', function () { it('saveOption', function () {
helper.loginAsAdmin();
var mapTab; var mapTab;
return ServerConnector.getConfiguration().then(function (configuration) { return ServerConnector.getConfiguration().then(function (configuration) {
mapTab = new ConfigurationAdminPanel({ mapTab = createConfigurationTab(configuration);
element: testDiv,
configuration: configuration
});
return mapTab.init(); return mapTab.init();
}).then(function () { }).then(function () {
return mapTab.saveOption(ConfigurationType.DEFAULT_MAP); return mapTab.saveOption(ConfigurationType.DEFAULT_MAP);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment