From 63598a2137d0b657d350ddac496ebf7d079a5186 Mon Sep 17 00:00:00 2001 From: Satyajit Dey Date: Sat, 16 May 2020 19:50:45 +0600 Subject: [PATCH] BE #1 Refactor request routing --- app.js | 12 +++++--- routes/auth.route.js | 20 +++++++------ routes/users.route.js | 66 ++++++++++++++++++++++--------------------- 3 files changed, 53 insertions(+), 45 deletions(-) diff --git a/app.js b/app.js index 491556f..6abba02 100644 --- a/app.js +++ b/app.js @@ -1,8 +1,10 @@ const express = require('express'); const logger = require('morgan'); + const bodyParser = require('body-parser'); -const UsersRouter = require('./routes/users.route'); -const AuthRouter = require('./routes/auth.route'); + +const authRouter = require('./routes/auth.route'); +const usersRouter = require('./routes/users.route'); const app = express(); @@ -25,8 +27,10 @@ app.use(function (req, res, next) { }); app.use(bodyParser.json()); -UsersRouter.routesConfig(app); -AuthRouter.routesConfig(app); + +//List all the routes +app.use('/auth', authRouter); +app.use(`${process.env.API_ENPOINT_BASE}/users`, usersRouter); app.get(process.env.API_ENPOINT_BASE, (req, res) => { res.send(`CMS API v1.`) diff --git a/routes/auth.route.js b/routes/auth.route.js index 85ca883..fe2f8c3 100644 --- a/routes/auth.route.js +++ b/routes/auth.route.js @@ -1,15 +1,17 @@ +const express = require('express'); +const router = express.Router(); + const AuthorizationController = require('../controllers/auth.controller'); const FieldValidateMiddleware = require("../middlewares/field.validation.middleware"); const AuthValidationMiddleware = require("../middlewares/auth.validation.middleware"); -exports.routesConfig = function (app) { +router.post('/auth/token', [ + AuthValidationMiddleware.authFieldValidationRules(), [ + FieldValidateMiddleware.validateRules, + AuthValidationMiddleware.matchEmailAndPassword + ], AuthorizationController.login +]); - app.post('/auth/token', [ - AuthValidationMiddleware.authFieldValidationRules(), [ - FieldValidateMiddleware.validateRules, - AuthValidationMiddleware.matchEmailAndPassword - ], AuthorizationController.login - ]); +router.get('/auth/logout', AuthorizationController.logout); - app.get('/auth/logout', AuthorizationController.logout); -}; \ No newline at end of file +module.exports = router; \ No newline at end of file diff --git a/routes/users.route.js b/routes/users.route.js index ea7a16f..30059e8 100644 --- a/routes/users.route.js +++ b/routes/users.route.js @@ -1,46 +1,48 @@ -const UsersController = require('../controllers/users.controller'); +const express = require('express'); +const router = express.Router(); +const UsersController = require('../controllers/users.controller'); const UserValidationMiddleware = require('../middlewares/user.validation.middleware'); const FieldValidateMiddleware = require('../middlewares/field.validation.middleware'); const AuthValidationMiddleware = require("../middlewares/auth.validation.middleware"); const AuthPermissionMiddleware = require("../middlewares/auth.permission.middleware"); -exports.routesConfig = function (app) { - app.post(`${process.env.API_ENPOINT_BASE}/users`, - //Pass validation rules - UserValidationMiddleware.registrationFieldValidationRules(), [ - //Validate the rule(s) - FieldValidateMiddleware.validateRules, - UserValidationMiddleware.isEmailAlreadyExists - ], - //Pass the actual operation middleware - UsersController.insert); +router.post('/', + //Pass validation rules + UserValidationMiddleware.registrationFieldValidationRules(), [ + //Validate the rule(s) + FieldValidateMiddleware.validateRules, + UserValidationMiddleware.isEmailAlreadyExists + ], + //Pass the actual operation middleware + UsersController.insert); - app.get(`${process.env.API_ENPOINT_BASE}/users`, [ - AuthValidationMiddleware.verifyJwtToken, - AuthPermissionMiddleware.minimumPermissionLevelRequired(process.env.AUTH_PERMISSION_ADMIN) - ], UsersController.list); +router.get('/', [ + AuthValidationMiddleware.verifyJwtToken, + AuthPermissionMiddleware.minimumPermissionLevelRequired(process.env.AUTH_PERMISSION_ADMIN) +], UsersController.list); - app.get(`${process.env.API_ENPOINT_BASE}/users/:userId`, [ +router.get('/:userId', [ + UserValidationMiddleware.verifyUserId, + AuthValidationMiddleware.verifyJwtToken, + AuthPermissionMiddleware.minimumPermissionLevelRequired(process.env.AUTH_PERMISSION_VIEWER), + AuthPermissionMiddleware.onlySameUserOrAdminCanDoThisAction +], UsersController.getById); + +router.patch('/:userId', + UserValidationMiddleware.updatePasswordValidationRules(), [ + FieldValidateMiddleware.validateRules, UserValidationMiddleware.verifyUserId, AuthValidationMiddleware.verifyJwtToken, AuthPermissionMiddleware.minimumPermissionLevelRequired(process.env.AUTH_PERMISSION_VIEWER), AuthPermissionMiddleware.onlySameUserOrAdminCanDoThisAction - ], UsersController.getById); + ], UsersController.patchById); - app.patch(`${process.env.API_ENPOINT_BASE}/users/:userId`, - UserValidationMiddleware.updatePasswordValidationRules(), [ - FieldValidateMiddleware.validateRules, - UserValidationMiddleware.verifyUserId, - AuthValidationMiddleware.verifyJwtToken, - AuthPermissionMiddleware.minimumPermissionLevelRequired(process.env.AUTH_PERMISSION_VIEWER), - AuthPermissionMiddleware.onlySameUserOrAdminCanDoThisAction - ], UsersController.patchById); +router.delete('/:userId', [ + UserValidationMiddleware.verifyUserId, + AuthValidationMiddleware.verifyJwtToken, + AuthPermissionMiddleware.minimumPermissionLevelRequired(process.env.AUTH_PERMISSION_ADMIN), + AuthPermissionMiddleware.sameUserCantDoThisAction +], UsersController.removeById); - app.delete(`${process.env.API_ENPOINT_BASE}/users/:userId`, [ - UserValidationMiddleware.verifyUserId, - AuthValidationMiddleware.verifyJwtToken, - AuthPermissionMiddleware.minimumPermissionLevelRequired(process.env.AUTH_PERMISSION_ADMIN), - AuthPermissionMiddleware.sameUserCantDoThisAction - ], UsersController.removeById); -}; +module.exports = router; \ No newline at end of file