diff options
author | soohwa <none@none.none> | 2017-10-15 07:39:48 +0200 |
---|---|---|
committer | soohwa <none@none.none> | 2017-10-15 07:39:48 +0200 |
commit | 97a23011dabe9727f9395794e2f3f6f213ffe21a (patch) | |
tree | ffc81555e39ba51bb00a0fe823ef7bc6ad96b9e8 /models/users.js | |
parent | 624719974e578caa92217bb51d67a0a307f35ce6 (diff) | |
download | wekan-97a23011dabe9727f9395794e2f3f6f213ffe21a.tar.gz wekan-97a23011dabe9727f9395794e2f3f6f213ffe21a.tar.bz2 wekan-97a23011dabe9727f9395794e2f3f6f213ffe21a.zip |
Add REST API better error output
Diffstat (limited to 'models/users.js')
-rw-r--r-- | models/users.js | 192 |
1 files changed, 121 insertions, 71 deletions
diff --git a/models/users.js b/models/users.js index abc0f82d..5ba0131f 100644 --- a/models/users.js +++ b/models/users.js @@ -575,93 +575,143 @@ 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, - }); + 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, + }); + } }); } |