summaryrefslogtreecommitdiffstats
path: root/server/api/users.js
diff options
context:
space:
mode:
authorUdo Walter2019-02-22 02:54:43 +0100
committerUdo Walter2019-02-22 02:54:43 +0100
commit0def171554ba84b48938fa142c408f80f24d70ab (patch)
treea9681ee0e3932ca6165ed222dc5f0eedff1c2572 /server/api/users.js
parent[ipxe builder] Add cancel button for the ipxe building process, limit log to ... (diff)
downloadbas-0def171554ba84b48938fa142c408f80f24d70ab.tar.gz
bas-0def171554ba84b48938fa142c408f80f24d70ab.tar.xz
bas-0def171554ba84b48938fa142c408f80f24d70ab.zip
rework user api to rest
Diffstat (limited to 'server/api/users.js')
-rw-r--r--server/api/users.js112
1 files changed, 48 insertions, 64 deletions
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: <ROLE_IDS>
- * userIds: <USER_IDS>
- *
- * 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: <ROLE_IDS>
- * userIds: <USER_IDS>
- *
- * 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