diff --git a/lib/www/server/api/index.js b/lib/www/server/api/index.js index b2ee175..3bfea0b 100644 --- a/lib/www/server/api/index.js +++ b/lib/www/server/api/index.js @@ -87,6 +87,7 @@ app.use(mw.auth.authentify); app.map({ '/project': { get: [ mw.project.get ], // Get list of projects + post: [ mw.auth.access.admin, mw.project.post ], // Create a new project }, '/project/:project': { get: [ mw.project.summary.get ], // Get project data diff --git a/lib/www/server/api/middleware/project/index.js b/lib/www/server/api/middleware/project/index.js index e974836..c6656f1 100644 --- a/lib/www/server/api/middleware/project/index.js +++ b/lib/www/server/api/middleware/project/index.js @@ -1,4 +1,5 @@ module.exports = { get: require('./get'), + post: require('./post'), summary: require('./summary'), }; diff --git a/lib/www/server/api/middleware/project/post.js b/lib/www/server/api/middleware/project/post.js new file mode 100644 index 0000000..b28023d --- /dev/null +++ b/lib/www/server/api/middleware/project/post.js @@ -0,0 +1,16 @@ + +const { project } = require('../../../lib/db'); + +module.exports = async function (req, res, next) { + + try { + const payload = req.body; + + const projectDefinition = await project.post(payload); + res.status(201).send(projectDefinition); + next(); + } catch (err) { + next(err); + } + +};