user.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. module.exports = function(crowi, app) {
  2. 'use strict';
  3. var Page = crowi.model('Page')
  4. , User = crowi.model('User')
  5. , Revision = crowi.model('Revision')
  6. , Bookmark = crowi.model('Bookmark')
  7. , ApiResponse = require('../util/apiResponse')
  8. , actions = {}
  9. , api = {};
  10. actions.api = api;
  11. api.bookmarks = function(req, res) {
  12. var options = {
  13. skip: req.query.offset || 0,
  14. limit: req.query.limit || 50,
  15. };
  16. Bookmark.findByUser(req.user, options, function(err, bookmarks) {
  17. res.json(bookmarks);
  18. });
  19. };
  20. api.checkUsername = function(req, res) {
  21. var username = req.query.username;
  22. User.findUserByUsername(username)
  23. .then(function(userData) {
  24. if (userData) {
  25. return res.json({ valid: false });
  26. }
  27. else {
  28. return res.json({ valid: true });
  29. }
  30. }).catch(function(err) {
  31. return res.json({ valid: true });
  32. });
  33. };
  34. /**
  35. * @api {get} /users.list Get user list
  36. * @apiName GetUserList
  37. * @apiGroup User
  38. *
  39. * @apiParam {String} user_ids
  40. */
  41. api.list = function(req, res) {
  42. var userIds = req.query.user_ids || null; // TODO: handling
  43. var userFetcher;
  44. if (!userIds || userIds.split(',').length <= 0) {
  45. userFetcher = User.findAllUsers();
  46. }
  47. else {
  48. userFetcher = User.findUsersByIds(userIds.split(','));
  49. }
  50. userFetcher
  51. .then(function(userList) {
  52. return userList.map((user) => {
  53. // omit email
  54. if (true !== user.isEmailPublished) { // compare to 'true' because Crowi original data doesn't have 'isEmailPublished'
  55. user.email = undefined;
  56. }
  57. return user;
  58. });
  59. })
  60. .then(function(userList) {
  61. var result = {
  62. users: userList,
  63. };
  64. return res.json(ApiResponse.success(result));
  65. }).catch(function(err) {
  66. return res.json(ApiResponse.error(err));
  67. });
  68. };
  69. return actions;
  70. };