summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--server/api/clients.js18
-rw-r--r--server/api/groups.js62
-rw-r--r--server/models/client.js2
-rw-r--r--server/models/group.js2
-rw-r--r--server/router.js18
-rw-r--r--webapp/src/store/groups.js8
6 files changed, 59 insertions, 51 deletions
diff --git a/server/api/clients.js b/server/api/clients.js
index aeb4673..37e207b 100644
--- a/server/api/clients.js
+++ b/server/api/clients.js
@@ -3,18 +3,16 @@ var path = require('path')
var db = require(path.join(__appdir, 'lib', 'sequelize'))
module.exports = {
- get: function (req, res) {
- switch (req.query.action) {
- case 'getInfo':
- db.client.findOne({ where: { id: req.query.id }}).then(client => {
- res.send(client)
- })
- break
- default:
- res.end()
+ get: {
+
+ getInfo: function (req, res) {
+ db.client.findOne({ where: { id: req.query.id } }).then(client => {
+ res.send(client)
+ })
}
+
},
- post: function (req, res) {
+ post: {
}
}
diff --git a/server/api/groups.js b/server/api/groups.js
index 8158d1c..ff29799 100644
--- a/server/api/groups.js
+++ b/server/api/groups.js
@@ -3,40 +3,40 @@ var path = require('path')
var db = require(path.join(__appdir, 'lib', 'sequelize'))
module.exports = {
- get: function (req, res) {
- var id = req.query.id > 0 ? req.query.id : null
- switch (req.query.action) {
- case 'getParents':
- db.group.findOne({ where: { id: req.query.id }, include: ['parents']}).then(group => {
- group.getParents().then(parents => {
- res.send(parents.map(x => ({ id: x.id, name: x.name })))
- })
- })
- break
- case 'getSubGroups':
- db.group.findAll({ where: { '$parents.id$': id }, include: ['parents'] }).then(result => {
- res.send(result)
- })
- break
- case 'getClients':
- db.client.findAll({ where: { '$groups.id$': id }, include: ['groups'] }).then(result => {
- res.send(result)
+ get: {
+
+ getParents: function (req, res) {
+ const id = req.query.id > 0 ? req.query.id : null
+ db.group.findOne({ where: { id: id }, include: ['parents'] }).then(group => {
+ group.getParents().then(parents => {
+ res.send(parents.map(x => ({ id: x.id, name: x.name })))
})
- break
- default:
- res.end()
+ })
+ },
+
+ getSubGroups: function (req, res) {
+ const id = req.query.id > 0 ? req.query.id : null
+ db.group.findAll({ where: { '$parents.id$': id }, include: ['parents'] }).then(result => {
+ res.send(result)
+ })
+ },
+
+ getClients: function (req, res) {
+ const id = req.query.id > 0 ? req.query.id : null
+ db.client.findAll({ where: { '$groups.id$': id }, include: ['groups'] }).then(result => {
+ res.send(result)
+ })
}
+
},
- post: function (req, res) {
- var id = req.body.id > 0 ? req.body.id : null
- switch (req.body.action) {
- case 'update':
- if (!id) res.end()
- db.group.update({ name: req.body.name }, { where: { id: id } })
- res.end()
- break
- default:
- res.end()
+ post: {
+
+ update: function (req, res) {
+ const id = req.body.id > 0 ? req.body.id : null
+ if (!id) res.end()
+ db.group.update({ name: req.body.name }, { where: { id: id } })
+ res.end()
}
+
}
}
diff --git a/server/models/client.js b/server/models/client.js
index ad3bc28..1086023 100644
--- a/server/models/client.js
+++ b/server/models/client.js
@@ -14,8 +14,8 @@ module.exports = (sequelize, DataTypes) => {
}, {
timestamps: false
})
- var GroupXClient = sequelize.define('group_x_client', {}, { timestamps: false, freezeTableName: true })
client.associate = function (models) {
+ var GroupXClient = sequelize.define('group_x_client', {}, { timestamps: false, freezeTableName: true })
client.belongsToMany(models.group, { as: 'groups', through: GroupXClient, foreignKey: 'clientId', otherKey: 'groupId'})
}
return client
diff --git a/server/models/group.js b/server/models/group.js
index 9151db5..223df07 100644
--- a/server/models/group.js
+++ b/server/models/group.js
@@ -11,8 +11,8 @@ module.exports = (sequelize, DataTypes) => {
}, {
timestamps: false
})
- var GroupXGroup = sequelize.define('group_x_group', {}, { timestamps: false, freezeTableName: true })
group.associate = function (models) {
+ var GroupXGroup = sequelize.define('group_x_group', {}, { timestamps: false, freezeTableName: true })
group.belongsToMany(group, { as: 'parents', through: GroupXGroup, foreignKey: 'childId', otherKey: 'parentId'})
}
return group
diff --git a/server/router.js b/server/router.js
index bde35a8..6c0e4cd 100644
--- a/server/router.js
+++ b/server/router.js
@@ -2,6 +2,16 @@ var express = require('express')
var router = express.Router()
var path = require('path')
+function mapActions (api, method) {
+ return function (req, res) {
+ if (method in api && req.params.action in api[method]) {
+ api[method][req.params.action](req, res)
+ } else {
+ res.status(501).end()
+ }
+ }
+}
+
// Authentication routes
var auth = require(path.join(__dirname, 'lib', 'authentication'))
router.get('/auth', auth.auth)
@@ -16,13 +26,13 @@ router.get('/user/info', auth.verifyToken, user.info)
// Groups API
var groups = require(path.join(__dirname, 'api', 'groups'))
-router.get('/groups', groups.get)
-router.post('/groups', groups.post)
+router.get('/groups/:action', mapActions(groups, 'get'))
+router.post('/groups/:action', mapActions(groups, 'post'))
// Clients API
var clients = require(path.join(__dirname, 'api', 'clients'))
-router.get('/clients', clients.get)
-router.post('/clients', clients.post)
+router.get('/clients/:action', mapActions(clients, 'get'))
+router.post('/clients/:action', mapActions(clients, 'post'))
// Permissions API
var permissions = require(path.join(__dirname, 'api', 'permissions'))
diff --git a/webapp/src/store/groups.js b/webapp/src/store/groups.js
index 49c567a..8ce7f6b 100644
--- a/webapp/src/store/groups.js
+++ b/webapp/src/store/groups.js
@@ -29,8 +29,8 @@ export default {
},
actions: {
loadGroupInChain (context, { id, name, tabIndex, switchTab }) {
- var getSubGroups = axios.get('/api/groups?action=getSubGroups&id=' + id)
- var getClients = axios.get('/api/groups?action=getClients&id=' + id)
+ var getSubGroups = axios.get('/api/groups/getSubGroups?id=' + id)
+ var getClients = axios.get('/api/groups/getClients?id=' + id)
axios.all([getSubGroups, getClients]).then(axios.spread((groupRespsonse, clientResponse) => {
var group = { id: id, name: name, subGroups: groupRespsonse.data, clients: clientResponse.data }
context.commit('setGroupInChain', { group: group, tabIndex: tabIndex })
@@ -38,12 +38,12 @@ export default {
}))
},
editGroup (context, { id, name }) {
- axios.get('/api/groups?action=getParents&id=' + id).then(res => {
+ axios.get('/api/groups/getParents?id=' + id).then(res => {
context.commit('openEditGroupDialog', { id: id, name: name, parents: res.data })
})
},
saveGroup (context) {
- axios.post('/api/groups?action=update&id=' + context.state.editGroup.id).then(res => {
+ axios.post('/api/groups/update?id=' + context.state.editGroup.id).then(res => {
context.commit('closeEditGroupDialog')
})
}