diffusion
Version:
Diffusion JavaScript client
85 lines (67 loc) • 3.03 kB
JavaScript
var _implements = require('util/interface')._implements;
var util = require('features/security/util');
var api = require('../../../features/security');
var requireNonNull = require('util/require-non-null');
var quoteAndEscape = util.quoteAndEscape;
var rolesToString = util.rolesToString;
var SystemAuthenticationScriptBuilder = _implements(api.SystemAuthenticationScriptBuilder,
function SystemAuthenticationScriptBuilderImpl(commands) {
commands = commands || "";
// Create a new ScriptBuilder, appended with a new command.
var withCommand = function (command) {
if (commands) {
return new SystemAuthenticationScriptBuilder(commands + '\n' + command);
}
return new SystemAuthenticationScriptBuilder(command);
};
this.build = function () {
return commands;
};
this.toString = function () {
return 'SystemAuthenticationScriptBuilder [' + commands + ']';
};
this.assignRoles = function (principal, roles) {
return withCommand("assign roles " +
quoteAndEscape(requireNonNull(principal, "principal")) +
' ' +
rolesToString(requireNonNull(roles, "roles")));
};
this.addPrincipal = function (principal, password, roles) {
roles = roles || [];
return withCommand('add principal ' +
quoteAndEscape(requireNonNull(principal, "principal")) +
' ' +
quoteAndEscape(requireNonNull(password, "password")) +
(roles.length ? ' ' + rolesToString(roles) : ""));
};
this.setPassword = function (principal, password) {
return withCommand('set password ' +
quoteAndEscape(requireNonNull(principal, "principal")) +
' ' +
quoteAndEscape(requireNonNull(password, "password")));
};
this.verifyPassword = function (principal, password) {
return withCommand("verify password " +
quoteAndEscape(requireNonNull(principal, "principal")) +
' ' +
quoteAndEscape(requireNonNull(password, "password")));
};
this.removePrincipal = function (principal) {
return withCommand("remove principal" +
' ' +
quoteAndEscape(requireNonNull(principal, "principal")));
};
this.allowAnonymousConnections = function (roles) {
roles = roles || [];
return withCommand("allow anonymous connections" +
' ' +
rolesToString(roles));
};
this.denyAnonymousConnections = function () {
return withCommand("deny anonymous connections");
};
this.abstainAnonymousConnections = function () {
return withCommand("abstain anonymous connections");
};
});
module.exports = SystemAuthenticationScriptBuilder;