diff options
author | Lauri Ojansivu <x@xet7.org> | 2017-11-19 10:44:37 +0200 |
---|---|---|
committer | Lauri Ojansivu <x@xet7.org> | 2017-11-19 10:44:37 +0200 |
commit | c01335ee29b525cdc06938e15958c74c1fe11bf3 (patch) | |
tree | f9deb9762c3fa855d50e11c37fbd9eaab6ca91ba /models/users.js | |
parent | 9353d785ea86b37cc83c88fec1b5b0a29cd9a888 (diff) | |
parent | 97a23011dabe9727f9395794e2f3f6f213ffe21a (diff) | |
download | wekan-c01335ee29b525cdc06938e15958c74c1fe11bf3.tar.gz wekan-c01335ee29b525cdc06938e15958c74c1fe11bf3.tar.bz2 wekan-c01335ee29b525cdc06938e15958c74c1fe11bf3.zip |
REST API better error output. Thanks to soohwa ! Related #1037
Diffstat (limited to 'models/users.js')
-rw-r--r-- | models/users.js | 194 |
1 files changed, 122 insertions, 72 deletions
diff --git a/models/users.js b/models/users.js index 85f4baf2..11a53ce6 100644 --- a/models/users.js +++ b/models/users.js @@ -588,94 +588,144 @@ if (Meteor.isServer) { // USERS REST API if (Meteor.isServer) { - JsonRoutes.add('GET', '/api/user', function (req, res, next) { - Authentication.checkLoggedIn(req.userId); - const data = Meteor.users.findOne({_id: req.userId}); - delete data.services; - JsonRoutes.sendResult(res, { - code: 200, - data, - }); + JsonRoutes.add('GET', '/api/user', function(req, res, next) { + try { + Authentication.checkLoggedIn(req.userId); + const data = Meteor.users.findOne({ _id: req.userId}); + delete data.services; + JsonRoutes.sendResult(res, { + code: 200, + data, + }); + } + catch (error) { + JsonRoutes.sendResult(res, { + code: 200, + data: error, + }); + } }); JsonRoutes.add('GET', '/api/users', function (req, res, next) { - Authentication.checkUserId(req.userId); - JsonRoutes.sendResult(res, { - code: 200, - data: Meteor.users.find({}).map(function (doc) { - return {_id: doc._id, username: doc.username}; - }), - }); + try { + Authentication.checkUserId(req.userId); + JsonRoutes.sendResult(res, { + code: 200, + data: Meteor.users.find({}).map(function (doc) { + return { _id: doc._id, username: doc.username }; + }), + }); + } + catch (error) { + JsonRoutes.sendResult(res, { + code: 200, + data: error, + }); + } }); + JsonRoutes.add('GET', '/api/users/:id', function (req, res, next) { - Authentication.checkUserId(req.userId); - const id = req.params.id; - JsonRoutes.sendResult(res, { - code: 200, - data: Meteor.users.findOne({_id: id}), - }); + try { + Authentication.checkUserId(req.userId); + const id = req.params.id; + JsonRoutes.sendResult(res, { + code: 200, + data: Meteor.users.findOne({ _id: id }), + }); + } + catch (error) { + JsonRoutes.sendResult(res, { + code: 200, + data: error, + }); + } }); + JsonRoutes.add('PUT', '/api/users/:id', function (req, res, next) { - Authentication.checkUserId(req.userId); - const id = req.params.id; - const action = req.body.action; - let data = Meteor.users.findOne({_id: id}); - if (data !== undefined) { - if (action === 'takeOwnership') { - data = Boards.find({ - 'members.userId': id, - 'members.isAdmin': true, - }).map(function (board) { - if (board.hasMember(req.userId)) { - board.removeMember(req.userId); + try { + Authentication.checkUserId(req.userId); + const id = req.params.id; + const action = req.body.action; + let data = Meteor.users.findOne({ _id: id }); + if (data !== undefined) { + if (action === 'takeOwnership') { + data = Boards.find({ + 'members.userId': id, + 'members.isAdmin': true, + }).map(function(board) { + if (board.hasMember(req.userId)) { + board.removeMember(req.userId); + } + board.changeOwnership(id, req.userId); + return { + _id: board._id, + title: board.title, + }; + }); + } else { + if ((action === 'disableLogin') && (id !== req.userId)) { + Users.update({ _id: id }, { $set: { loginDisabled: true, 'services.resume.loginTokens': '' } }); + } else if (action === 'enableLogin') { + Users.update({ _id: id }, { $set: { loginDisabled: '' } }); } - board.changeOwnership(id, req.userId); - return { - _id: board._id, - title: board.title, - }; - }); - } else { - if ((action === 'disableLogin') && (id !== req.userId)) { - Users.update({_id: id}, {$set: {loginDisabled: true, 'services.resume.loginTokens': ''}}); - } else if (action === 'enableLogin') { - Users.update({_id: id}, {$set: {loginDisabled: ''}}); + data = Meteor.users.findOne({ _id: id }); } - data = Meteor.users.findOne({_id: id}); } + JsonRoutes.sendResult(res, { + code: 200, + data, + }); + } + catch (error) { + JsonRoutes.sendResult(res, { + code: 200, + data: error, + }); } - JsonRoutes.sendResult(res, { - code: 200, - data, - }); }); - JsonRoutes.add('POST', '/api/users/', function (req, res, next) { - Authentication.checkUserId(req.userId); - const id = Accounts.createUser({ - username: req.body.username, - email: req.body.email, - password: req.body.password, - from: 'admin', - }); - JsonRoutes.sendResult(res, { - code: 200, - data: { - _id: id, - }, - }); + JsonRoutes.add('POST', '/api/users/', function (req, res, next) { + try { + Authentication.checkUserId(req.userId); + const id = Accounts.createUser({ + username: req.body.username, + email: req.body.email, + password: req.body.password, + from: 'admin', + }); + JsonRoutes.sendResult(res, { + code: 200, + data: { + _id: id, + }, + }); + } + catch (error) { + JsonRoutes.sendResult(res, { + code: 200, + data: error, + }); + } }); JsonRoutes.add('DELETE', '/api/users/:id', function (req, res, next) { - Authentication.checkUserId(req.userId); - const id = req.params.id; - Meteor.users.remove({_id: id}); - JsonRoutes.sendResult(res, { - code: 200, - data: { - _id: id, - }, - }); + try { + Authentication.checkUserId(req.userId); + const id = req.params.id; + Meteor.users.remove({ _id: id }); + JsonRoutes.sendResult(res, { + code: 200, + data: { + _id: id, + }, + }); + } + catch (error) { + JsonRoutes.sendResult(res, { + code: 200, + data: error, + }); + } }); } |