users.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. Meteor.publish('user-miniprofile', function (usernames) {
  2. check(usernames, Array);
  3. // eslint-disable-next-line no-console
  4. // console.log('usernames:', usernames);
  5. const ret = ReactiveCache.getUsers(
  6. {
  7. $or: [
  8. { username: { $in: usernames } },
  9. { importUsernames: { $in: usernames } },
  10. ],
  11. },
  12. {
  13. fields: {
  14. ...Users.safeFields,
  15. importUsernames: 1,
  16. },
  17. },
  18. true,
  19. );
  20. return ret;
  21. });
  22. Meteor.publish('user-admin', function () {
  23. const ret = Meteor.users.find(this.userId, {
  24. fields: {
  25. isAdmin: 1,
  26. teams: 1,
  27. orgs: 1,
  28. authenticationMethod: 1,
  29. },
  30. });
  31. return ret;
  32. });
  33. Meteor.publish('user-authenticationMethod', function (match) {
  34. check(match, String);
  35. const ret = ReactiveCache.getUsers(
  36. { $or: [{ _id: match }, { email: match }, { username: match }] },
  37. {
  38. fields: {
  39. authenticationMethod: 1,
  40. teams: 1,
  41. orgs: 1,
  42. },
  43. },
  44. true,
  45. );
  46. return ret;
  47. });
  48. // update last connection date and last connection average time (in seconds) for a user
  49. // function UpdateLastConnectionDateAndLastConnectionAverageTime(lstUsers) {
  50. // let lastConnectionAverageTime;
  51. // lstUsers.forEach((currentUser) => {
  52. // lastConnectionAverageTime =
  53. // currentUser.lastConnectionAverageTimeInSecs !== undefined
  54. // ? currentUser.lastConnectionAverageTimeInSecs
  55. // : 0;
  56. // lastConnectionAverageTime =
  57. // currentUser.lastConnectionDate !== undefined
  58. // ? ((new Date().getTime() - currentUser.lastConnectionDate.getTime()) /
  59. // 1000 +
  60. // lastConnectionAverageTime) /
  61. // 2
  62. // : 0;
  63. // Users.update(currentUser._id, {
  64. // $set: {
  65. // lastConnectionDate: new Date(),
  66. // lastConnectionAverageTimeInSecs: parseInt(lastConnectionAverageTime),
  67. // },
  68. // });
  69. // });
  70. // }
  71. if (Meteor.isServer) {
  72. /* Got this error, so using this code only when metrics enabled with process.env... below
  73. I20221023-09:15:09.599(3)? Exception in onConnection callback: TypeError: Cannot read property 'userId' of null
  74. I20221023-09:15:09.601(3)? at server/publications/users.js:106:44
  75. I20221023-09:15:09.601(3)? at Array.forEach (<anonymous>)
  76. I20221023-09:15:09.601(3)? at server/publications/users.js:102:46
  77. I20221023-09:15:09.601(3)? at runWithEnvironment (packages/meteor.js:1347:24)
  78. I20221023-09:15:09.601(3)? at packages/meteor.js:1360:14
  79. I20221023-09:15:09.601(3)? at packages/ddp-server/livedata_server.js:1614:9
  80. I20221023-09:15:09.601(3)? at Hook.forEach (packages/callback-hook/hook.js:110:15)
  81. I20221023-09:15:09.601(3)? at Hook.each (packages/callback-hook/hook.js:122:17)
  82. I20221023-09:15:09.602(3)? at Server._handleConnect (packages/ddp-server/livedata_server.js:1612:27)
  83. I20221023-09:15:09.602(3)? at packages/ddp-server/livedata_server.js:1496:18
  84. */
  85. if (process.env.WEKAN_METRICS_ACCEPTED_IP_ADDRESS) {
  86. /*
  87. Meteor.onConnection(function (connection) {
  88. // console.log(
  89. // 'Meteor.server.stream_server.open_sockets',
  90. // Meteor.server.stream_server.open_sockets,
  91. // );
  92. //console.log('connection.Id on connection...', connection.id);
  93. // connection.onClose(() => {
  94. // console.log('connection.Id on close...', connection.id);
  95. // // Get all user that were connected to this socket
  96. // // And update last connection date and last connection average time (in seconds) for each user
  97. // let lstOfUserThatWasConnectedToThisSocket = ReactiveCache.getUsers({
  98. // lastconnectedSocketId: connection.id,
  99. // }, {}, true).fetch();
  100. // if (
  101. // lstOfUserThatWasConnectedToThisSocket !== undefined &&
  102. // lstOfUserThatWasConnectedToThisSocket.length > 0
  103. // ) {
  104. // console.log({ lstOfUserThatWasConnectedToThisSocket });
  105. // UpdateLastConnectionDateAndLastConnectionAverageTime(
  106. // lstOfUserThatWasConnectedToThisSocket,
  107. // );
  108. // }
  109. // });
  110. // Meteor.server.stream_server.open_sockets.forEach((socket) =>
  111. // console.log('meteor session', socket._meteorSession.userId),
  112. // );
  113. // update last connected user date (needed for one of the KPI)
  114. Meteor.server.stream_server.open_sockets.forEach(
  115. (socket) => {
  116. if (socket?._meteorSession?.userId) {
  117. Users.update(socket._meteorSession.userId, {
  118. $set: {
  119. lastConnectionDate: new Date(),
  120. },
  121. });
  122. }
  123. });
  124. });
  125. */
  126. }
  127. }