Skip to content

Commit

Permalink
BE #1 Refactor request routing
Browse files Browse the repository at this point in the history
  • Loading branch information
Satyajit Dey committed May 16, 2020
1 parent 50028e2 commit 63598a2
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 45 deletions.
12 changes: 8 additions & 4 deletions app.js
Original file line number Diff line number Diff line change
@@ -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();

Expand All @@ -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.`)
Expand Down
20 changes: 11 additions & 9 deletions routes/auth.route.js
Original file line number Diff line number Diff line change
@@ -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);
};
module.exports = router;
66 changes: 34 additions & 32 deletions routes/users.route.js
Original file line number Diff line number Diff line change
@@ -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;

0 comments on commit 63598a2

Please sign in to comment.