src/config/routes.js
// Import the neccesary modules.
import jwt from 'express-jwt';
import BeerController from '../controllers/BeerController';
import IndexController from '../controllers/IndexController';
import UserController from '../controllers/UserController';
import './passport';
/**
* The beer controller.
* @type {BeerController}
*/
const _beerController = new BeerController();
/**
* The index controller.
* @type {IndexController}
*/
const _indexController = new IndexController();
/**
* The user controller.
* @type {UserConroller}
*/
const _userController = new UserController();
/**
* The JSON webtoken configuration.
* @type {jwt}
* @see https://github.com/auth0/express-jwt
*/
const _auth = jwt({
secret: process.env.SECRET || 'SECRET',
userProperty: 'payload'
});
/**
* Setup ExpressJS routing.
* @param {ExpressJS} app - The ExpresssJS application.
* @returns {void}
*/
export default function setupRoutes(app) {
app.get('/', _indexController.getIndex);
app.param('beer', _beerController.preLoadBeer);
app.get('/beers', _beerController.getBeers);
app.get('/beers/:beer', _beerController.getBeer);
app.post('/beers', _auth, _beerController.createBeer);
app.put('/beers/:beer', _auth, _beerController.updateBeer);
app.delete('/beers/:beer', _auth, _beerController.deleteBeer);
app.post('/beers/:beer/vote', _auth, _beerController.voteBeer);
app.post('/register', _userController.register);
app.post('/login', _userController.login);
app.get('/users/:user', _auth, _userController.getUser);
}