kibana-with-account
Version:
kibana-with-account is develop based kibana project
158 lines (124 loc) • 3.36 kB
JavaScript
var Joi = require('joi');
var Hoek = require('hoek');
var AuthPlugin = require('../auth');
exports.register = function (server, options, next) {
options = Hoek.applyToDefaults({basePath: ''}, options);
server.route({
method: 'GET',
path: options.basePath + '/user-groups',
config: {
auth: {
strategy: 'session',
scope: ['admin', 'account']
},
validate: {
query: {
name: Joi.string().allow(''),
fields: Joi.string(),
sort: Joi.string().default('_id'),
limit: Joi.number().default(20),
page: Joi.number().default(1)
}
},
},
handler: function (request, reply) {
var UserGroup = request.server.plugins['hapi-mongo-models'].UserGroup;
var query = {};
if (request.query.name) {
query.name = new RegExp('^.*?' + request.query.name + '.*$', 'i');
}
var fields = request.query.fields;
var sort = request.query.sort;
var limit = request.query.limit;
var page = request.query.page;
UserGroup.pagedFind(query, fields, sort, limit, page, function (err, results) {
if (err) {
return reply(err);
}
reply(results);
});
}
});
server.route({
method: 'GET',
path: options.basePath + '/user-groups/{id}',
config: {
auth: {
strategy: 'session',
scope: 'admin'
},
pre: [
AuthPlugin.preware.ensureAdminGroup('root')
]
},
handler: function (request, reply) {
var UserGroup = request.server.plugins['hapi-mongo-models'].UserGroup;
UserGroup.findGroupByName(request.params.id, function (err, userGroup) {
if (err) {
return reply(err);
}
if (!userGroup) {
return reply({message: 'Document not found.'}).code(404);
}
reply(userGroup);
});
}
});
server.route({
method: 'POST',
path: options.basePath + '/user-groups',
config: {
auth: {
strategy: 'session',
scope: 'admin'
},
validate: {
payload: {
name: Joi.string().required()
}
},
pre: [
AuthPlugin.preware.ensureAdminGroup('root')
]
},
handler: function (request, reply) {
var UserGroup = request.server.plugins['hapi-mongo-models'].UserGroup;
var name = request.payload.name;
UserGroup.create(name, function (err, userGroup) {
if (err) {
return reply(err);
}
reply(userGroup);
});
}
});
server.route({
method: 'DELETE',
path: options.basePath + '/user-groups/{id}',
config: {
auth: {
strategy: 'session',
scope: 'admin'
},
pre: [
AuthPlugin.preware.ensureAdminGroup('root')
]
},
handler: function (request, reply) {
var UserGroup = request.server.plugins['hapi-mongo-models'].UserGroup;
UserGroup.findByIdAndDelete(request.params.id, function (err, userGroup) {
if (err) {
return reply(err);
}
if (!userGroup) {
return reply({message: 'Document not found.'}).code(404);
}
reply({message: 'Success.'});
});
}
});
next();
};
exports.register.attributes = {
name: 'user-groups'
};