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