UNPKG

sheercms

Version:

Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.

161 lines (139 loc) 4.8 kB
var logger = require('../logger'); var api = require('../api'); var auth = require('../auth'); /* callback: (err) */ module.exports.init = function(server, callback) { //routes server.get('/cms/groups/list', auth.authenticate, routeGroupList); server.get('/cms/groups/get', auth.authenticate, routeGroupGet); server.post('/cms/groups/create', auth.authenticateAdmin, routeGroupCreate); server.post('/cms/groups/update', auth.authenticateAdmin, routeGroupUpdate); server.post('/cms/groups/delete', auth.authenticateAdmin, routeGroupDelete); server.post('/cms/groups/reorder', auth.authenticateAdmin, routeGroupReorder); server.post('/cms/groups/recalculate', auth.authenticateAdmin, routeGroupRecalculate); if (callback) callback(null); }; function routeGroupList(req, res, next) { try { var username = req.user.username; var branch = req.query.branch; var parentId = req.query.parentId; api.groups.getGroups(branch, parentId, username, function(err, results) { if (err) res.json({ success: false, message: err.message }); else { res.json({ success: true, groups: results }); } }); } catch(e) { logger.error(e); res.json({ success: false, message: 'Error retrieving the list of groups.'}); } } function routeGroupGet(req, res, next) { try { var id = req.query.groupId; api.groups.getGroup(id, function(err, result) { if (err) res.json({ success: false, message: err.message }); else res.json({ success: true, group: result }); }); } catch(e) { logger.error(e); res.json({ success: false, message: 'Error retrieving the group.'}); } } function routeGroupCreate(req, res, next) { try { var json = req.body.data; var group = JSON.parse(json); api.groups.createGroup(group, function(err, savedGroup) { if (err) res.json({ success: false, message: err.message }); else res.json({ success: true, group: savedGroup }); }); } catch(e) { logger.error(e); res.json({ success: false, message: 'Error creating the group.'}); } } function routeGroupUpdate(req, res, next) { try { var json = req.body.data; var group = JSON.parse(json); //fix the group permissions if (group && group.perms) { var arr = []; for(var i = 0; i < group.perms.length; i++) { arr.push(new Permission(group.perms[i])); } group.perms = arr; } api.groups.updateGroup(group, function(err, savedGroup) { if (err) res.json({ success: false, message: err.message }); else res.json({ success: true, group: savedGroup }); }); } catch(e) { logger.error(e); res.json({ success: false, message: 'Error updating the group.'}); } } function routeGroupDelete(req, res, next) { try { var id = req.body.groupId; api.groups.deleteGroup(id, function(err) { if (err) res.json({ success: false, message: err.message }); else res.json({ success: true, message: 'Group deleted successfully!' }); }); } catch(e) { logger.error(e); res.json({ success: false, message: 'Error deleting the group.'}); } } function routeGroupRecalculate(req, res, next) { try { var id = req.body.groupId; api.groups.recalculateCount(id, function(err, itemCount) { if (err) res.json({ success: false, message: err.message }); else res.json({ success: true, itemCount: itemCount, message: 'Group counts recalculated!' }); }); } catch(e) { logger.error(e); res.json({ success: false, message: 'Error recalculating the group counts.'}); } } function routeGroupReorder(req, res, next) { try { var json = req.body.data; var positions = JSON.parse(json); api.groups.reorderGroups(positions, function(err) { if (err) res.json({ success: false, message: err.message }); else res.json({ success: true }); }); } catch(e) { logger.error(e); res.json({ success: false, message: 'Error updating the group positions.'}); } } function Permission(p) { var self = this; self.role = p.role; self.create = p.create; self.read = p.read; self.update = p.update; self.delete = p.delete; self.publish = p.publish; }