diffusion
Version:
Diffusion JavaScript client
80 lines (64 loc) • 2.96 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 permissionsToString = util.permissionsToString;
var quoteAndEscape = util.quoteAndEscape;
var rolesToString = util.rolesToString;
var SecurityScriptBuilder = _implements(api.SecurityScriptBuilder,
function SecurityScriptBuilderImpl(commands) {
commands = commands || "";
var withCommand = function (command) {
if (commands) {
return new SecurityScriptBuilder(commands + '\n' + command);
}
return new SecurityScriptBuilder(command);
};
this.build = function () {
return commands;
};
this.toString = function () {
return 'ConfigurationScriptBuilder [' + commands + ']';
};
this.setRolesForAnonymousSessions = function (roles) {
return withCommand("set roles for anonymous sessions " +
rolesToString(requireNonNull(roles, "roles")));
};
this.setRolesForNamedSessions = function (roles) {
return withCommand("set roles for named sessions " +
rolesToString(requireNonNull(roles, "roles")));
};
this.setGlobalPermissions = function (role, permissions) {
return withCommand("set " +
quoteAndEscape(requireNonNull(role, "role")) +
" permissions " +
permissionsToString(requireNonNull(permissions, "permissions")));
};
this.setDefaultTopicPermissions = function (role, permissions) {
return withCommand("set " +
quoteAndEscape(requireNonNull(role, "role")) +
" default topic permissions " +
permissionsToString(requireNonNull(permissions, "permissions")));
};
this.removeTopicPermissions = function (role, path) {
return withCommand("remove " +
quoteAndEscape(requireNonNull(role, "role")) +
" permissions for topic " +
quoteAndEscape(requireNonNull(path, "path")));
};
this.setTopicPermissions = function (role, path, permissions) {
return withCommand("set " +
quoteAndEscape(requireNonNull(role, "role")) +
" topic " +
quoteAndEscape(requireNonNull(path, "path")) +
" permissions " +
permissionsToString(requireNonNull(permissions, "permissions")));
};
this.setRoleIncludes = function (role, included) {
return withCommand("set " +
quoteAndEscape(requireNonNull(role, "role")) +
" includes " +
rolesToString(requireNonNull(included, "included roles")));
};
});
module.exports = SecurityScriptBuilder;