'use strict'
-const mongoose = require('mongoose')
-
const checkErrors = require('./utils').checkErrors
+const db = require('../../initializers/database')
const logger = require('../../helpers/logger')
-const User = mongoose.model('User')
-
const validatorsUsers = {
- usersAdd: usersAdd,
- usersRemove: usersRemove,
- usersUpdate: usersUpdate
+ usersAdd,
+ usersRemove,
+ usersUpdate
}
function usersAdd (req, res, next) {
req.checkBody('username', 'Should have a valid username').isUserUsernameValid()
req.checkBody('password', 'Should have a valid password').isUserPasswordValid()
- // TODO: check we don't have already the same username
-
logger.debug('Checking usersAdd parameters', { parameters: req.body })
- checkErrors(req, res, next)
+ checkErrors(req, res, function () {
+ db.User.loadByUsername(req.body.username, function (err, user) {
+ if (err) {
+ logger.error('Error in usersAdd request validator.', { error: err })
+ return res.sendStatus(500)
+ }
+
+ if (user) return res.status(409).send('User already exists.')
+
+ next()
+ })
+ })
}
function usersRemove (req, res, next) {
- req.checkParams('username', 'Should have a valid username').isUserUsernameValid()
+ req.checkParams('id', 'Should have a valid id').notEmpty().isInt()
logger.debug('Checking usersRemove parameters', { parameters: req.params })
checkErrors(req, res, function () {
- User.loadByUsername(req.params.username, function (err, user) {
+ db.User.loadById(req.params.id, function (err, user) {
if (err) {
logger.error('Error in usersRemove request validator.', { error: err })
return res.sendStatus(500)
if (!user) return res.status(404).send('User not found')
+ if (user.username === 'root') return res.status(400).send('Cannot remove the root user')
+
next()
})
})
}
function usersUpdate (req, res, next) {
+ req.checkParams('id', 'Should have a valid id').notEmpty().isInt()
// Add old password verification
req.checkBody('password', 'Should have a valid password').isUserPasswordValid()