feat(writeapi): added POST /api/v1/groups
parent
49994f3a15
commit
ba345e53e8
@ -0,0 +1,36 @@
|
||||
'use strict';
|
||||
|
||||
const groups = require('../../groups');
|
||||
const events = require('../../events');
|
||||
|
||||
const helpers = require('../helpers');
|
||||
|
||||
const Groups = module.exports;
|
||||
|
||||
Groups.create = async (req, res) => {
|
||||
if (typeof req.body.name !== 'string' || groups.isPrivilegeGroup(req.body.name)) {
|
||||
throw new Error('[[error:invalid-group-name]]');
|
||||
}
|
||||
|
||||
if (!res.locals.privileges['group:create']) {
|
||||
throw new Error('[[error:no-privileges]]');
|
||||
}
|
||||
|
||||
req.body.ownerUid = req.user.uid;
|
||||
req.body.system = false;
|
||||
|
||||
const groupObj = await groups.create(req.body);
|
||||
helpers.formatApiResponse(200, res, groupObj);
|
||||
logGroupEvent(req, 'group-create', {
|
||||
groupName: req.body.name,
|
||||
});
|
||||
};
|
||||
|
||||
function logGroupEvent(req, event, additional) {
|
||||
events.log({
|
||||
type: event,
|
||||
uid: req.user.uid,
|
||||
ip: req.ip,
|
||||
...additional,
|
||||
});
|
||||
}
|
@ -0,0 +1,72 @@
|
||||
'use strict';
|
||||
|
||||
const router = require('express').Router();
|
||||
const middleware = require('../../middleware');
|
||||
const controllers = require('../../controllers');
|
||||
const routeHelpers = require('../helpers');
|
||||
|
||||
const setupApiRoute = routeHelpers.setupApiRoute;
|
||||
|
||||
module.exports = function () {
|
||||
const middlewares = [middleware.authenticate];
|
||||
|
||||
setupApiRoute(router, '/', middleware, [...middlewares, middleware.checkRequired.bind(null, ['name']), middleware.exposePrivilegeSet], 'post', controllers.write.groups.create);
|
||||
|
||||
// app.delete('/:slug', apiMiddleware.requireUser, middleware.exposeGroupName, apiMiddleware.validateGroup, apiMiddleware.requireGroupOwner, function(req, res) {
|
||||
// Groups.destroy(res.locals.groupName, function(err) {
|
||||
// errorHandler.handle(err, res);
|
||||
// });
|
||||
// });
|
||||
|
||||
// app.put('/:slug/membership', apiMiddleware.requireUser, middleware.exposeGroupName, apiMiddleware.validateGroup, function(req, res) {
|
||||
// if (Meta.config.allowPrivateGroups !== '0') {
|
||||
// Groups.isPrivate(res.locals.groupName, function(err, isPrivate) {
|
||||
// if (isPrivate) {
|
||||
// Groups.requestMembership(res.locals.groupName, req.user.uid, function(err) {
|
||||
// errorHandler.handle(err, res);
|
||||
// });
|
||||
// } else {
|
||||
// Groups.join(res.locals.groupName, req.user.uid, function(err) {
|
||||
// errorHandler.handle(err, res);
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
// } else {
|
||||
// Groups.join(res.locals.groupName, req.user.uid, function(err) {
|
||||
// errorHandler.handle(err, res);
|
||||
// });
|
||||
// }
|
||||
// });
|
||||
|
||||
// app.put('/:slug/membership/:uid', middleware.exposeGroupName, apiMiddleware.validateGroup, apiMiddleware.requireUser, apiMiddleware.requireAdmin, function(req, res) {
|
||||
// Groups.join(res.locals.groupName, req.params.uid, function(err) {
|
||||
// errorHandler.handle(err, res);
|
||||
// });
|
||||
// });
|
||||
|
||||
// app.delete('/:slug/membership', apiMiddleware.requireUser, middleware.exposeGroupName, apiMiddleware.validateGroup, function(req, res) {
|
||||
// Groups.isMember(req.user.uid, res.locals.groupName, function(err, isMember) {
|
||||
// if (isMember) {
|
||||
// Groups.leave(res.locals.groupName, req.user.uid, function(err) {
|
||||
// errorHandler.handle(err, res);
|
||||
// });
|
||||
// } else {
|
||||
// errorHandler.respond(400, res);
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
|
||||
// app.delete('/:slug/membership/:uid', middleware.exposeGroupName, apiMiddleware.validateGroup, apiMiddleware.requireUser, apiMiddleware.requireAdmin, function(req, res) {
|
||||
// Groups.isMember(req.params.uid, res.locals.groupName, function(err, isMember) {
|
||||
// if (isMember) {
|
||||
// Groups.leave(res.locals.groupName, req.params.uid, function(err) {
|
||||
// errorHandler.handle(err, res);
|
||||
// });
|
||||
// } else {
|
||||
// errorHandler.respond(400, res);
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
|
||||
return router;
|
||||
};
|
Loading…
Reference in New Issue