[FIX] Anonymous users are counted on the server statistics and engagement dashboard (#19263)

Co-authored-by: Diego Sampaio <chinello@gmail.com>
pull/19358/head
pierre-lehnen-rc 5 years ago committed by GitHub
parent 0522de4b17
commit 368a3624cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      app/models/server/models/Sessions.js
  2. 1
      app/models/server/raw/Users.js
  3. 3
      app/models/server/raw/index.ts
  4. 5
      app/statistics/server/lib/SAUMonitor.js
  5. 4
      ee/app/engagement-dashboard/server/lib/users.js
  6. 1
      server/startup/migrations/index.js
  7. 41
      server/startup/migrations/v208.js

@ -8,6 +8,7 @@ export const aggregates = {
userId: { $exists: true },
lastActivityAt: { $exists: true },
device: { $exists: true },
roles: { $ne: 'anonymous' },
type: 'session',
$or: [{
year: { $lt: year },

@ -315,6 +315,7 @@ export class UsersRaw extends BaseRaw {
{
$match: {
createdAt: { $gte: start, $lte: end },
roles: { $ne: 'anonymous' },
},
},
{

@ -8,6 +8,8 @@ import SettingsModel from '../models/Settings';
import { SettingsRaw } from './Settings';
import UsersModel from '../models/Users';
import { UsersRaw } from './Users';
import SessionsModel from '../models/Sessions';
import { SessionsRaw } from './Sessions';
import RoomsModel from '../models/Rooms';
import { RoomsRaw } from './Rooms';
import LivechatCustomFieldModel from '../models/LivechatCustomField';
@ -56,6 +58,7 @@ export const Roles = new RolesRaw(RolesModel.model.rawCollection());
export const Subscriptions = new SubscriptionsRaw(SubscriptionsModel.model.rawCollection());
export const Settings = new SettingsRaw(SettingsModel.model.rawCollection());
export const Users = new UsersRaw(UsersModel.model.rawCollection());
export const Sessions = new SessionsRaw(SessionsModel.model.rawCollection());
export const Rooms = new RoomsRaw(RoomsModel.model.rawCollection());
export const LivechatCustomField = new LivechatCustomFieldRaw(LivechatCustomFieldModel.model.rawCollection());
export const LivechatTrigger = new LivechatTriggerRaw(LivechatTriggerModel.model.rawCollection());

@ -125,9 +125,10 @@ export class SAUMonitorClass {
return;
}
const userId = info.user._id;
const { roles, _id: userId } = info.user;
const loginAt = new Date();
const params = { userId, loginAt, ...getDateObj() };
const params = { userId, roles, loginAt, ...getDateObj() };
this._handleSession(info.connection, params);
this._updateConnectionInfo(info.connection.id, { loginAt });
});

@ -7,6 +7,10 @@ import { Analytics } from '../../../../../app/models/server';
import { convertDateToInt, diffBetweenDaysInclusive, getTotalOfWeekItems, convertIntToDate } from './date';
export const handleUserCreated = (user) => {
if (user.roles?.includes('anonymous')) {
return;
}
Promise.await(AnalyticsRaw.saveUserData({
date: convertDateToInt(user.ts),
user,

@ -204,4 +204,5 @@ import './v204';
import './v205';
import './v206';
import './v207';
import './v208';
import './xrun';

@ -0,0 +1,41 @@
import Future from 'fibers/future';
import { Migrations } from '../../../app/migrations';
import { Users, Sessions } from '../../../app/models/server/raw';
async function migrateSessions(fut) {
const cursor = Users.find({ roles: 'anonymous' }, { projection: { _id: 1 } });
if (!cursor) {
return;
}
const users = await cursor.toArray();
if (users.length === 0) {
fut.return();
return;
}
const userIds = users.map(({ _id }) => _id);
Sessions.update({
userId: { $in: userIds },
}, {
$set: {
roles: ['anonymous'],
},
}, {
multi: true,
});
fut.return();
}
Migrations.add({
version: 208,
up() {
const fut = new Future();
migrateSessions(fut);
fut.wait();
},
});
Loading…
Cancel
Save