1.0.11 • Published 6 years ago

es6-api-controller v1.0.11

Weekly downloads
13
License
MIT
Repository
github
Last release
6 years ago

api-controller

this is an api controller for an express api

this is work in progress

to install

npm install es6-api-controller --save

usage example

  1. include your own isAuthenticated and hasAuthorization hooks
// controllers/base.controller.server.js
'use strict';

const BaseController = require('es6-api-controller').BaseController; // eslint-disable-line

const user = require('./users.auth.controller.server');

class MyBaseController extends BaseController {
  isAuthenticated(req, res, next) {
    return user.isAuthenticated(req, res, next);
  }
  hasAuthorization(roles, req, res, next) {
    return user.hasAuthorization(roles, req, res, next);
  }

}

module.exports = MyBaseController;
  1. Inherit MyBaseController in all your express controllers
// controllers/users.controller.server.js
'use strict';

const BaseController = require('./base.controller.server');

class UsersController extends BaseController {

}

const usersController = new UsersController(require('mongoose').model('User'));

module.exports = usersController;
  1. setup your routes in the following way
'use strict';

const router = require('express').Router();
const users = require('../controllers/users.controller.server');

const usersAuth = require('../controllers/users.auth.controller.server');

router.post('/auth/signin', usersAuth.signin);
router.post('/auth/signout', usersAuth.signout);

router.use('/users', users.isAuthenticated.bind(users));
router.route('/users')
.get(
  users.hasAuthorization.bind(users, ['admin', 'client']),
  users.index.bind(users),
  users.populateMeta.bind(users),
  users.apiResponse.bind(users)
)
.post(
  users.hasAuthorization.bind(users, ['admin']),
  users.create.bind(users)
);
router.route('/users/self')
.get(users.self.bind(users))
.put(users.updateSelf.bind(users));

router.route('/users/:userId')
.get(
  users.hasAuthorization.bind(users, ['admin', 'client']),
  users.read.bind(users)
)
.put(
  users.hasAuthorization.bind(users, ['admin']),
  users.update.bind(users)
)
.delete(users.hasAuthorization.bind(users, 'admin'), users.delete.bind(users));

router.param('userId', users.findById.bind(users));
module.exports = router;
1.0.11

6 years ago

1.0.10

7 years ago

1.0.9

7 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago