summaryrefslogtreecommitdiffstats
path: root/models/users.js
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2017-11-19 10:44:37 +0200
committerLauri Ojansivu <x@xet7.org>2017-11-19 10:44:37 +0200
commitc01335ee29b525cdc06938e15958c74c1fe11bf3 (patch)
treef9deb9762c3fa855d50e11c37fbd9eaab6ca91ba /models/users.js
parent9353d785ea86b37cc83c88fec1b5b0a29cd9a888 (diff)
parent97a23011dabe9727f9395794e2f3f6f213ffe21a (diff)
downloadwekan-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.js194
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,
+ });
+ }
});
}