UNPKG

maglev

Version:

Preconfigured NodeJS framework

120 lines (93 loc) 2.62 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.isOwner = isOwner; exports.loadByID = loadByID; exports.loadByPermalink = loadByPermalink; exports.create = create; exports.remove = remove; exports.current = current; var _webError = require('web-error'); var _webError2 = _interopRequireDefault(_webError); var _tv = require('tv4'); var _tv2 = _interopRequireDefault(_tv); var _okay = require('okay'); var _okay2 = _interopRequireDefault(_okay); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function isOwner(req, res, next) { if (!req.user || !req.objects.user) { return next(new _webError2.default(401)); } if (!req.user.isMe(req.objects.user)) { return next(new _webError2.default(401)); } next(); } function loadByID(req, res, next, id) { var User = req.models.User; if (!id) { return next(new _webError2.default(400)); } User.findById(id, (0, _okay2.default)(next, function (user) { if (!user) { return next(new _webError2.default(404)); } req.objects.user = user; next(); })); } function loadByPermalink(req, res, next, permalink) { var User = req.models.User; if (!permalink) { return next(new _webError2.default(400)); } User.findOne({ permalink: permalink }, (0, _okay2.default)(next, function (user) { if (!user) { return next(new _webError2.default(404)); } req.objects.user = user; next(); })); } /** * Create user by simple registraion */ function create(req, res, next) { var User = req.models.User; var options = req.server.options; exports.createSchema = exports.createSchema || User.getRestJSONSchema(); var result = _tv2.default.validateMultiple(req.body, exports.createSchema); if (!result.valid) { return next(new _webError2.default(400, 'Validation errors', result.errors)); } User.create(req.body, (0, _okay2.default)(next, function (user) { if (!user) { return next(new Error('User is undefined')); } res.jsonp({ token: user.generateBearerToken(options.token.secret, options.token.expiration), user: user.toPrivateJSON() }); })); } function remove(req, res, next) { var user = req.objects.user; if (!user) { return next(new _webError2.default(404)); } user.remove((0, _okay2.default)(next, function () { res.status(204).end(); })); } function current(req, res, next) { var user = req.user; if (!user) { return next(new _webError2.default(404)); } res.jsonp({ user: user.toPrivateJSON() }); }