From 0def171554ba84b48938fa142c408f80f24d70ab Mon Sep 17 00:00:00 2001 From: Udo Walter Date: Fri, 22 Feb 2019 01:54:43 +0000 Subject: rework user api to rest --- server/api/users.js | 112 ++++++++++++++++++++++------------------------------ 1 file changed, 48 insertions(+), 64 deletions(-) (limited to 'server/api/users.js') diff --git a/server/api/users.js b/server/api/users.js index 8287bb4..aca4188 100644 --- a/server/api/users.js +++ b/server/api/users.js @@ -1,70 +1,54 @@ /* global __appdir */ var path = require('path') var db = require(path.join(__appdir, 'lib', 'sequelize')) - -// GET requests -module.exports.get = { - - getUserInfo: function (req, res) { - db.user.findOne({ where: { id: req.user.id } }).then(userDb => { - var user = { } - user.id = userDb.id - user.username = userDb.username - user.email = userDb.email - user.name = userDb.name - res.status(200).send(user) - }) - }, - - /* - * @return: Returns a list of all users in the database and their given roles. - */ - getUserList: function (req, res) { - db.user.findAll({ - attributes: ['id', 'username', 'name'], - include: ['roles'] - }).then(function (users) { - res.status(200).send(users) - }) +var jwt = require('jsonwebtoken') +var express = require('express') +const { decorateApp } = require('@awaitjs/express') +var router = decorateApp(express.Router()) + +// ############################################################################ +// ########################### GET requests ################################# + +/* + * @return: Returns a list of all users in the database and their given roles. + */ +router.getAsync('', async (req, res) => { + const users = await db.user.findAll({ include: ['roles'], order: [['name', 'ASC']] }) + res.status(200).send(users) +}) + +/* + * @return: Returns information about a specific user. + */ +router.getAsync('/:id', async (req, res) => { + const id = req.params.id === 'current' ? req.user.id : req.params.id + const user = await db.user.findOne({ where: { id } }) + if (user) { + res.status(200).send(user) + } else { + res.status(404).end() } -} - -// POST requests -module.exports.post = { - - /* - * roleIds: - * userIds: - * - * Adds the given roles to the given users in the database. - */ - grantRoles: function (req, res) { - const roleIds = req.body.roleIds - const userIds = req.body.userIds - - db.user.findAll({ where: { id: userIds } }).then(users => { - users.forEach(user => { - user.addRoles(roleIds) - }) - res.status(200).send('success') - }) - }, +}) + +// ############################################################################ +// ########################## POST requests ################################# + +router.postAsync('/:id/roles', async (req, res) => { + const id = req.params.id === 'current' ? req.user.id : req.params.id + const user = await db.user.findOne({ where: { id } }) + if (user) { + if (req.query.delete !== undefined && req.query.delete !== 'false') { + await user.removeRoles(req.body.ids) + } else { + await user.addRoles(req.body.ids) + } + res.status(200).end() + } else { + res.status(404).end() + } +}) - /* - * roleIds: - * userIds: - * - * Removes the given roles from the given users in the database. - */ - revokeRoles: function (req, res) { - const roleIds = req.body.roleIds - const userIds = req.body.userIds +// ############################################################################ +// ############################################################################ - db.user.findAll({ where: { id: userIds } }).then(users => { - users.forEach(user => { - user.removeRoles(roleIds) - }) - res.status(200).send('success') - }) - } -} +module.exports.router = router -- cgit v1.2.3-55-g7522