users.js 4.4 KB

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