Home Reference Source Repository

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);
}