UNPKG

maglev

Version:

Preconfigured NodeJS framework

86 lines (67 loc) 2.24 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateForCurrent = generateForCurrent; exports.generate = generate; exports.invalidate = invalidate; exports.ensure = ensure; exports.ensureWithSession = ensureWithSession; exports.tryEnsure = tryEnsure; var _webError = require('web-error'); var _webError2 = _interopRequireDefault(_webError); var _okay = require('okay'); var _okay2 = _interopRequireDefault(_okay); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function generateForCurrent(req, res, next) { var user = req.user; var options = req.server.options; if (!user) { return next(new _webError2.default(401, 'User is undefined')); } res.jsonp({ token: user.generateBearerToken(options.token.secret, options.token.expiration), user: user.toPrivateJSON() }); } function generate(req, res, next) { var User = req.models.User; var options = req.server.options; if (!req.body.username || !req.body.password) { return next(new _webError2.default(400, 'One of parameter missing')); } User.findByUsernamePassword(req.body.username, req.body.password, false, (0, _okay2.default)(next, function (user) { if (!user) { return next(new _webError2.default(404, 'Invalid username or password')); } res.jsonp({ token: user.generateBearerToken(options.token.secret, options.token.expiration), user: user.toPrivateJSON() }); })); } function invalidate(req, res, next) { if (!req.body.access_token) { return next(new _webError2.default(400, 'Token is missing')); } // TODO remove from keystore db and invalidate token return res.status(501).jsonp({}); } function ensure(req, res, next) { req.server.secure.authenticate('bearer', { session: false })(req, res, next); } function ensureWithSession(req, res, next) { if (req.isAuthenticated() === true) { return next(); // already authenticated via session cookie } req.server.secure.authenticate('bearer', { session: false })(req, res, next); } function tryEnsure(req, res, next) { req.server.secure.authenticate(['bearer', 'anonymous'], { session: false })(req, res, next); }