users.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. /*
  82. Meteor.onConnection(function (connection) {
  83. // console.log(
  84. // 'Meteor.server.stream_server.open_sockets',
  85. // Meteor.server.stream_server.open_sockets,
  86. // );
  87. //console.log('connection.Id on connection...', connection.id);
  88. // connection.onClose(() => {
  89. // console.log('connection.Id on close...', connection.id);
  90. // // Get all user that were connected to this socket
  91. // // And update last connection date and last connection average time (in seconds) for each user
  92. // let lstOfUserThatWasConnectedToThisSocket = Users.find({
  93. // lastconnectedSocketId: connection.id,
  94. // }).fetch();
  95. // if (
  96. // lstOfUserThatWasConnectedToThisSocket !== undefined &&
  97. // lstOfUserThatWasConnectedToThisSocket.length > 0
  98. // ) {
  99. // console.log({ lstOfUserThatWasConnectedToThisSocket });
  100. // UpdateLastConnectionDateAndLastConnectionAverageTime(
  101. // lstOfUserThatWasConnectedToThisSocket,
  102. // );
  103. // }
  104. // });
  105. // Meteor.server.stream_server.open_sockets.forEach((socket) =>
  106. // console.log('meteor session', socket._meteorSession.userId),
  107. // );
  108. // update last connected user date (needed for one of the KPI)
  109. Meteor.server.stream_server.open_sockets.forEach(
  110. (socket) =>
  111. //console.log('meteor session', socket._meteorSession.userId),
  112. socket !== undefined &&
  113. socket._meteorSession?.userId !== null &&
  114. Users.update(socket._meteorSession.userId, {
  115. $set: {
  116. lastConnectionDate: new Date(),
  117. },
  118. }),
  119. );
  120. });
  121. */
  122. }
  123. }