UNPKG

diffusion

Version:

Diffusion JavaScript client

85 lines (67 loc) 3.03 kB
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;