node-express-mongodb-jwt-rest-api-skeleton
Version:
Node.js express.js MongoDB JWT REST API - This is a basic API REST skeleton written on JavaScript using async/await. Great for building a starter web API for your front-end (Android, iOS, Vue, react, angular, or anything that can consume an API)
91 lines (80 loc) • 1.35 kB
JavaScript
const express = require('express')
const router = express.Router()
require('../../config/passport')
const passport = require('passport')
const requireAuth = passport.authenticate('jwt', {
session: false
})
const trimRequest = require('trim-request')
const { roleAuthorization } = require('../controllers/auth')
const {
getUsers,
createUser,
getUser,
updateUser,
deleteUser
} = require('../controllers/users')
const {
validateCreateUser,
validateGetUser,
validateUpdateUser,
validateDeleteUser
} = require('../controllers/users/validators')
/*
* Users routes
*/
/*
* Get items route
*/
router.get(
'/',
requireAuth,
roleAuthorization(['admin']),
trimRequest.all,
getUsers
)
/*
* Create new item route
*/
router.post(
'/',
requireAuth,
roleAuthorization(['admin']),
trimRequest.all,
validateCreateUser,
createUser
)
/*
* Get item route
*/
router.get(
'/:id',
requireAuth,
roleAuthorization(['admin']),
trimRequest.all,
validateGetUser,
getUser
)
/*
* Update item route
*/
router.patch(
'/:id',
requireAuth,
roleAuthorization(['admin']),
trimRequest.all,
validateUpdateUser,
updateUser
)
/*
* Delete item route
*/
router.delete(
'/:id',
requireAuth,
roleAuthorization(['admin']),
trimRequest.all,
validateDeleteUser,
deleteUser
)
module.exports = router