@tiledesk/tiledesk-server 2.1.4-0.21 → 2.1.4-0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app.js +9 -1
- package/package.json +1 -1
- package/pubmodules/emailNotification/requestNotification.js +97 -32
- package/pubmodules/pubModulesManager.js +66 -13
- package/routes/auth.js +4 -3
- package/routes/requestUtilRoot.js +30 -0
- package/services/modulesManager.js +86 -23
- package/websocket/webSocketServer.js +5 -4
package/app.js
CHANGED
|
@@ -99,6 +99,8 @@ var cacheUtil = require("./utils/cacheUtil");
|
|
|
99
99
|
var images = require('./routes/images');
|
|
100
100
|
var files = require('./routes/files');
|
|
101
101
|
var campaigns = require('./routes/campaigns');
|
|
102
|
+
var requestUtilRoot = require('./routes/requestUtilRoot');
|
|
103
|
+
|
|
102
104
|
|
|
103
105
|
var bootDataLoader = require('./services/bootDataLoader');
|
|
104
106
|
var settingDataLoader = require('./services/settingDataLoader');
|
|
@@ -133,6 +135,11 @@ try {
|
|
|
133
135
|
}
|
|
134
136
|
|
|
135
137
|
|
|
138
|
+
//enterprise modules can modify pubmodule
|
|
139
|
+
modulesManager.start();
|
|
140
|
+
|
|
141
|
+
pubModulesManager.start();
|
|
142
|
+
|
|
136
143
|
|
|
137
144
|
settingDataLoader.save();
|
|
138
145
|
schemaMigrationService.checkSchemaMigration();
|
|
@@ -282,6 +289,8 @@ app.use('/widgets', widgetsLoader);
|
|
|
282
289
|
app.use('/images', images);
|
|
283
290
|
app.use('/files', files);
|
|
284
291
|
app.use('/users', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken], users);
|
|
292
|
+
app.use('/requests_util', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken], requestUtilRoot);
|
|
293
|
+
|
|
285
294
|
|
|
286
295
|
// TODO security issues
|
|
287
296
|
if (process.env.DISABLE_TRANSCRIPT_VIEW_PAGE ) {
|
|
@@ -310,7 +319,6 @@ app.use('/:projectid/', [projectIdSetter, projectSetter]);
|
|
|
310
319
|
app.use('/:projectid/authtestWithRoleCheck', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken], authtestWithRoleCheck);
|
|
311
320
|
|
|
312
321
|
app.use('/:projectid/leads', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['bot','subscription'])], lead);
|
|
313
|
-
// guest perche nn c'è guest???? no???
|
|
314
322
|
app.use('/:projectid/requests/:request_id/messages', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes(null, ['bot','subscription'])] , message);
|
|
315
323
|
|
|
316
324
|
app.use('/:projectid/messages', [passport.authenticate(['basic', 'jwt'], { session: false }), validtoken, roleChecker.hasRoleOrTypes('agent', ['bot','subscription'])] , messagesRootRoute);
|
package/package.json
CHANGED
|
@@ -22,6 +22,7 @@ var config = require('../../config/database');
|
|
|
22
22
|
|
|
23
23
|
var widgetConfig = require('../../config/widget');
|
|
24
24
|
var widgetTestLocation = process.env.WIDGET_TEST_LOCATION || widgetConfig.testLocation;
|
|
25
|
+
let configSecret = process.env.GLOBAL_SECRET || config.secret;
|
|
25
26
|
|
|
26
27
|
class RequestNotification {
|
|
27
28
|
|
|
@@ -30,30 +31,57 @@ listen() {
|
|
|
30
31
|
var that = this;
|
|
31
32
|
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
|
|
35
|
+
var messageCreateKey = 'message.create';
|
|
36
|
+
if (messageEvent.queueEnabled) {
|
|
37
|
+
messageCreateKey = 'message.create.queue';
|
|
38
|
+
}
|
|
39
|
+
winston.debug('RequestNotification messageCreateKey: ' + messageCreateKey);
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
messageEvent.on(messageCreateKey, function(message) {
|
|
34
43
|
|
|
35
44
|
setImmediate(() => {
|
|
36
|
-
// TODO aggiunta jwt widget login
|
|
37
45
|
winston.debug("sendUserEmail", message);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
// }
|
|
46
|
+
|
|
47
|
+
|
|
41
48
|
|
|
42
49
|
});
|
|
43
50
|
});
|
|
44
51
|
|
|
45
|
-
|
|
52
|
+
var requestCreateKey = 'request.create';
|
|
53
|
+
if (requestEvent.queueEnabled) {
|
|
54
|
+
requestCreateKey = 'request.create.queue';
|
|
55
|
+
}
|
|
56
|
+
winston.debug('RequestNotification requestCreateKey: ' + requestCreateKey);
|
|
46
57
|
|
|
58
|
+
requestEvent.on(requestCreateKey, function(request) {
|
|
59
|
+
// winston.info('quiiiiiiiiiiiii');
|
|
47
60
|
setImmediate(() => {
|
|
48
61
|
|
|
49
|
-
|
|
62
|
+
/*
|
|
63
|
+
if (request && (request.channel.name===ChannelConstants.EMAIL || request.channel.name===ChannelConstants.FORM )) {
|
|
64
|
+
winston.verbose("sending sendEmailChannelTakingNotification for EMAIL or FORM channel");
|
|
65
|
+
that.sendEmailChannelTakingNotification(request.id_project, request)
|
|
66
|
+
}
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
that.sendAgentEmail(request.id_project, request);
|
|
70
|
+
|
|
50
71
|
});
|
|
51
72
|
});
|
|
52
73
|
|
|
53
74
|
|
|
54
|
-
|
|
75
|
+
var requestParticipantsUpdateKey = 'request.participants.update';
|
|
76
|
+
// this is not queued
|
|
77
|
+
// if (requestEvent.queueEnabled) {
|
|
78
|
+
// requestParticipantsUpdateKey = 'request.participants.update.queue';
|
|
79
|
+
// }
|
|
80
|
+
winston.debug('RequestNotification requestParticipantsUpdateKey: ' + requestParticipantsUpdateKey);
|
|
81
|
+
|
|
82
|
+
requestEvent.on(requestParticipantsUpdateKey, function(data) {
|
|
55
83
|
|
|
56
|
-
winston.
|
|
84
|
+
winston.info("requestEvent request.participants.update");
|
|
57
85
|
|
|
58
86
|
var request = data.request;
|
|
59
87
|
|
|
@@ -78,7 +106,13 @@ listen() {
|
|
|
78
106
|
|
|
79
107
|
// TODO Send email also for addAgent and reassign. Alessio request for pooled only?
|
|
80
108
|
|
|
81
|
-
|
|
109
|
+
var requestCloseExtendedKey = 'request.close.extended';
|
|
110
|
+
// this is not queued
|
|
111
|
+
// if (requestEvent.queueEnabled) {
|
|
112
|
+
// requestCloseExtendedKey = 'request.close.extended.queue';
|
|
113
|
+
// }
|
|
114
|
+
winston.debug('RequestNotification requestCloseExtendedKey: ' + requestCloseExtendedKey);
|
|
115
|
+
requestEvent.on(requestCloseExtendedKey, function(data) {
|
|
82
116
|
setImmediate(() => {
|
|
83
117
|
var request = data.request;
|
|
84
118
|
var notify = data.notify;
|
|
@@ -110,7 +144,7 @@ listen() {
|
|
|
110
144
|
|
|
111
145
|
if (project_users && project_users.length>0) {
|
|
112
146
|
project_users.forEach(project_user => {
|
|
113
|
-
if (project_user.id_user) {
|
|
147
|
+
if (project_user.id_user && project_user.id_user.email) {
|
|
114
148
|
return that.sendTranscriptByEmail(project_user.id_user.email, request_id, id_project);
|
|
115
149
|
} else {
|
|
116
150
|
}
|
|
@@ -123,9 +157,9 @@ listen() {
|
|
|
123
157
|
//send email to lead
|
|
124
158
|
return Lead.findById(request.requester_id, function(err, lead){
|
|
125
159
|
//if (lead && lead.email) {
|
|
126
|
-
if (lead) {
|
|
160
|
+
if (lead && lead.email) {
|
|
127
161
|
return that.sendTranscriptByEmail(lead.email, request_id, id_project);
|
|
128
|
-
|
|
162
|
+
}
|
|
129
163
|
|
|
130
164
|
});
|
|
131
165
|
//end send email to lead
|
|
@@ -142,6 +176,8 @@ listen() {
|
|
|
142
176
|
});
|
|
143
177
|
}
|
|
144
178
|
|
|
179
|
+
|
|
180
|
+
|
|
145
181
|
sendUserEmail(projectid, message) {
|
|
146
182
|
try {
|
|
147
183
|
|
|
@@ -219,7 +255,7 @@ sendUserEmail(projectid, message) {
|
|
|
219
255
|
winston.info("userAnonym ",userAnonym);
|
|
220
256
|
|
|
221
257
|
|
|
222
|
-
var token = jwt.sign(userAnonym,
|
|
258
|
+
var token = jwt.sign(userAnonym, configSecret, signOptions);
|
|
223
259
|
winston.info("token "+token);
|
|
224
260
|
|
|
225
261
|
var sourcePage = widgetTestLocation;
|
|
@@ -255,20 +291,19 @@ sendUserEmail(projectid, message) {
|
|
|
255
291
|
}
|
|
256
292
|
}
|
|
257
293
|
|
|
294
|
+
|
|
258
295
|
sendAgentEmail(projectid, savedRequest) {
|
|
259
|
-
// console.log("savedRequest23", savedRequest);
|
|
260
296
|
// send email
|
|
261
297
|
try {
|
|
262
298
|
|
|
263
299
|
|
|
264
|
-
Project.findOne({_id: projectid, status: 100}, function(err, project){
|
|
300
|
+
Project.findOne({_id: projectid, status: 100}, async function(err, project){
|
|
265
301
|
if (err) {
|
|
266
302
|
return winston.error(err);
|
|
267
303
|
}
|
|
268
304
|
|
|
269
305
|
if (!project) {
|
|
270
|
-
|
|
271
|
-
return console.warn("Project not found", projectid);
|
|
306
|
+
return winston.warn("Project not found", projectid);
|
|
272
307
|
} else {
|
|
273
308
|
|
|
274
309
|
winston.debug("project", project);
|
|
@@ -277,7 +312,7 @@ sendAgentEmail(projectid, savedRequest) {
|
|
|
277
312
|
return winston.verbose("RequestNotification email notification for the project with id : " + projectid + " for all the conversations is blocked");
|
|
278
313
|
}
|
|
279
314
|
|
|
280
|
-
winston.
|
|
315
|
+
winston.info("savedRequest: " + JSON.stringify(savedRequest));
|
|
281
316
|
|
|
282
317
|
// TODO fare il controllo anche sul dipartimento con modalità assigned o pooled
|
|
283
318
|
if (savedRequest.status==RequestConstants.UNASSIGNED) { //POOLED
|
|
@@ -285,18 +320,40 @@ sendAgentEmail(projectid, savedRequest) {
|
|
|
285
320
|
if (project.settings && project.settings.email && project.settings.email.notification && project.settings.email.notification.conversation && project.settings.email.notification.conversation.pooled == false ) {
|
|
286
321
|
return winston.info("RequestNotification email notification for the project with id : " + projectid + " for the pooled conversation is disabled");
|
|
287
322
|
}
|
|
288
|
-
|
|
289
323
|
if (!savedRequest.snapshot) {
|
|
290
|
-
return winston.warn("RequestNotification savedRequest.snapshot is null :(");
|
|
324
|
+
return winston.warn("RequestNotification savedRequest.snapshot is null :(. You are closing an old request?");
|
|
291
325
|
}
|
|
292
|
-
|
|
293
|
-
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
var snapshotAgents = savedRequest; //riassegno varibile cosi nn cambio righe successive
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
// winston.info("savedRequest.snapshot.agents", savedRequest.snapshot.agents);
|
|
335
|
+
// agents è selected false quindi nn va sicuro
|
|
336
|
+
if (!snapshotAgents.snapshot.agents) {
|
|
337
|
+
//return winston.warn("RequestNotification snapshotAgents.snapshot.agents is null :(. You are closing an old request?", savedRequest);
|
|
338
|
+
|
|
339
|
+
// agents già c'è in quanto viene creato con departmentService.getOperator nella request.create ma nn c'è per request.participants.update
|
|
340
|
+
snapshotAgents = await Request.findById(savedRequest.id).select({"snapshot":1}).exec();
|
|
341
|
+
winston.info('load snapshotAgents with Request.findById ');
|
|
294
342
|
}
|
|
343
|
+
winston.info('snapshotAgents', snapshotAgents);
|
|
344
|
+
|
|
345
|
+
if (!snapshotAgents.snapshot.agents) {
|
|
346
|
+
return winston.warn("RequestNotification snapshotAgents.snapshot.agents is null :(. You are closing an old request?", savedRequest);
|
|
347
|
+
}
|
|
348
|
+
|
|
295
349
|
// var allAgents = savedRequest.agents;
|
|
296
|
-
var allAgents =
|
|
297
|
-
|
|
350
|
+
var allAgents = snapshotAgents.snapshot.agents;
|
|
351
|
+
|
|
352
|
+
// // var allAgents = savedRequest.agents;
|
|
353
|
+
// var allAgents = savedRequest.snapshot.agents;
|
|
354
|
+
// // winston.debug("allAgents", allAgents);
|
|
298
355
|
|
|
299
|
-
|
|
356
|
+
allAgents.forEach(project_user => {
|
|
300
357
|
// winston.debug("project_user", project_user); //DON'T UNCOMMENT THIS. OTHERWISE this.agents.filter of models/request.js:availableAgentsCount has .filter not found.
|
|
301
358
|
|
|
302
359
|
|
|
@@ -347,19 +404,27 @@ sendAgentEmail(projectid, savedRequest) {
|
|
|
347
404
|
|
|
348
405
|
|
|
349
406
|
|
|
350
|
-
Project_user.findOne( { id_user:assignedId, id_project: projectid, status: "active"})
|
|
407
|
+
Project_user.findOne( { id_user:assignedId, id_project: projectid, status: "active"})
|
|
351
408
|
.exec(function (err, project_user) {
|
|
352
409
|
|
|
410
|
+
// botprefix
|
|
411
|
+
if (assignedId.startsWith("bot_")) {
|
|
412
|
+
return ;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
if (err) {
|
|
416
|
+
return winston.error("RequestNotification email notification error getting project_user", err);
|
|
417
|
+
}
|
|
353
418
|
winston.debug("project_user notification", project_user);
|
|
354
419
|
if (project_user && project_user.settings && project_user.settings.email && project_user.settings.email.notification && project_user.settings.email.notification.conversation && project_user.settings.email.notification.conversation.assigned && project_user.settings.email.notification.conversation.assigned.toyou == false ) {
|
|
355
420
|
return winston.info("RequestNotification email notification for the user with id : " + assignedId + " for the pooled conversation is disabled");
|
|
356
421
|
}
|
|
357
422
|
|
|
358
|
-
|
|
359
|
-
if (assignedId.startsWith("bot_")) {
|
|
360
|
-
return ;
|
|
361
|
-
}
|
|
423
|
+
|
|
362
424
|
|
|
425
|
+
if (!project_user) {
|
|
426
|
+
return winston.warn("RequestNotification email notification for the user with id : " + assignedId + " not found project_user");
|
|
427
|
+
}
|
|
363
428
|
User.findOne({_id: assignedId, status: 100})
|
|
364
429
|
.cache(cacheUtil.defaultTTL, "users:id:"+assignedId)
|
|
365
430
|
.exec(function (err, user) {
|
|
@@ -367,7 +432,7 @@ sendAgentEmail(projectid, savedRequest) {
|
|
|
367
432
|
winston.error("Error sending email to " + savedRequest.participants[0], err);
|
|
368
433
|
}
|
|
369
434
|
if (!user) {
|
|
370
|
-
|
|
435
|
+
winston.warn("User not found", savedRequest.participants[0]);
|
|
371
436
|
} else {
|
|
372
437
|
winston.debug("Sending sendNewAssignedRequestNotification to user with email", user.email);
|
|
373
438
|
// if (user.emailverified) { enable it? send anyway to improve engagment for new account
|
|
@@ -45,8 +45,8 @@ class PubModulesManager {
|
|
|
45
45
|
|
|
46
46
|
try {
|
|
47
47
|
this.appRules = require('./rules/appRules');
|
|
48
|
-
this.appRules.start();
|
|
49
|
-
winston.info("PubModulesManager
|
|
48
|
+
// this.appRules.start();
|
|
49
|
+
winston.info("PubModulesManager initialized rules.");
|
|
50
50
|
} catch(err) {
|
|
51
51
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
52
52
|
winston.info("PubModulesManager init rules module not found");
|
|
@@ -58,8 +58,8 @@ class PubModulesManager {
|
|
|
58
58
|
try {
|
|
59
59
|
this.messageActions = require('./messageActions');
|
|
60
60
|
winston.debug("this.messageActions:"+ this.messageActions);
|
|
61
|
-
this.messageActions.messageActionsInterceptor.listen();
|
|
62
|
-
winston.info("PubModulesManager
|
|
61
|
+
// this.messageActions.messageActionsInterceptor.listen();
|
|
62
|
+
winston.info("PubModulesManager initialized messageActions.");
|
|
63
63
|
} catch(err) {
|
|
64
64
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
65
65
|
winston.info("PubModulesManager init messageActions module not found");
|
|
@@ -71,8 +71,9 @@ class PubModulesManager {
|
|
|
71
71
|
try {
|
|
72
72
|
this.messageTransformer = require('./messageTransformer');
|
|
73
73
|
winston.debug("this.messageTransformer:"+ this.messageTransformer);
|
|
74
|
-
this.messageTransformer.messageTransformerInterceptor.listen();
|
|
75
|
-
|
|
74
|
+
// this.messageTransformer.messageTransformerInterceptor.listen();
|
|
75
|
+
// this.messageTransformer.microLanguageTransformerInterceptor.listen();
|
|
76
|
+
winston.info("PubModulesManager initialized messageTransformer.");
|
|
76
77
|
} catch(err) {
|
|
77
78
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
78
79
|
winston.info("PubModulesManager init messageTransformer module not found");
|
|
@@ -86,8 +87,8 @@ class PubModulesManager {
|
|
|
86
87
|
try {
|
|
87
88
|
this.emailNotification = require('./emailNotification');
|
|
88
89
|
winston.debug("this.emailNotification:"+ this.emailNotification);
|
|
89
|
-
this.emailNotification.requestNotification.listen();
|
|
90
|
-
winston.info("PubModulesManager
|
|
90
|
+
// this.emailNotification.requestNotification.listen();
|
|
91
|
+
winston.info("PubModulesManager initialized requestNotification loaded.");
|
|
91
92
|
} catch(err) {
|
|
92
93
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
93
94
|
winston.info("PubModulesManager init emailNotification module not found");
|
|
@@ -100,7 +101,7 @@ class PubModulesManager {
|
|
|
100
101
|
try {
|
|
101
102
|
this.eventsRoute = require('./events/eventRoute');
|
|
102
103
|
winston.debug("this.eventRoute:"+ this.eventsRoute);
|
|
103
|
-
winston.info("PubModulesManager
|
|
104
|
+
winston.info("PubModulesManager initialized eventsRoute.");
|
|
104
105
|
} catch(err) {
|
|
105
106
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
106
107
|
winston.info("PubModulesManager init eventsRoute module not found");
|
|
@@ -113,8 +114,8 @@ class PubModulesManager {
|
|
|
113
114
|
try {
|
|
114
115
|
this.entityEraser = require('./entityEraser');
|
|
115
116
|
winston.debug("this.entityEraser:"+ this.entityEraser);
|
|
116
|
-
this.entityEraser.eraserInterceptor.listen();
|
|
117
|
-
winston.info("PubModulesManager
|
|
117
|
+
// this.entityEraser.eraserInterceptor.listen();
|
|
118
|
+
winston.info("PubModulesManager initialized entityEraser.");
|
|
118
119
|
} catch(err) {
|
|
119
120
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
120
121
|
winston.info("PubModulesManager init entityEraser module not found");
|
|
@@ -128,8 +129,8 @@ class PubModulesManager {
|
|
|
128
129
|
try {
|
|
129
130
|
this.scheduler = require('./scheduler');
|
|
130
131
|
winston.debug("this.scheduler:"+ this.scheduler);
|
|
131
|
-
this.scheduler.taskRunner.start();
|
|
132
|
-
winston.info("PubModulesManager
|
|
132
|
+
// this.scheduler.taskRunner.start();
|
|
133
|
+
winston.info("PubModulesManager initialized scheduler.");
|
|
133
134
|
} catch(err) {
|
|
134
135
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
135
136
|
winston.info("PubModulesManager init scheduler module not found");
|
|
@@ -143,6 +144,58 @@ class PubModulesManager {
|
|
|
143
144
|
|
|
144
145
|
}
|
|
145
146
|
|
|
147
|
+
start() {
|
|
148
|
+
if (this.appRules) {
|
|
149
|
+
try {
|
|
150
|
+
this.appRules.start();
|
|
151
|
+
winston.info("PubModulesManager appRules started.");
|
|
152
|
+
} catch(err) {
|
|
153
|
+
winston.info("PubModulesManager error starting appRules module", err);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (this.messageActions) {
|
|
158
|
+
try {
|
|
159
|
+
this.messageActions.messageActionsInterceptor.listen();
|
|
160
|
+
winston.info("PubModulesManager messageActions started.");
|
|
161
|
+
} catch(err) {
|
|
162
|
+
winston.info("PubModulesManager error starting messageActions module", err);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
if (this.messageTransformer) {
|
|
168
|
+
try {
|
|
169
|
+
this.messageTransformer.messageTransformerInterceptor.listen();
|
|
170
|
+
this.messageTransformer.microLanguageTransformerInterceptor.listen();
|
|
171
|
+
winston.info("PubModulesManager messageTransformer started.");
|
|
172
|
+
} catch(err) {
|
|
173
|
+
winston.info("PubModulesManager error starting messageTransformer module", err);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
if (this.emailNotification) {
|
|
179
|
+
try {
|
|
180
|
+
this.emailNotification.requestNotification.listen();
|
|
181
|
+
winston.info("PubModulesManager emailNotification started.");
|
|
182
|
+
} catch(err) {
|
|
183
|
+
winston.info("PubModulesManager error starting requestNotification module", err);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (this.scheduler) {
|
|
188
|
+
try {
|
|
189
|
+
this.scheduler.taskRunner.start();
|
|
190
|
+
winston.info("PubModulesManager scheduler started.");
|
|
191
|
+
} catch(err) {
|
|
192
|
+
winston.info("PubModulesManager error starting scheduler module", err);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
}
|
|
198
|
+
|
|
146
199
|
|
|
147
200
|
|
|
148
201
|
}
|
package/routes/auth.js
CHANGED
|
@@ -24,6 +24,7 @@ var validtoken = require('../middleware/valid-token');
|
|
|
24
24
|
var PendingInvitation = require("../models/pending-invitation");
|
|
25
25
|
const { check, validationResult } = require('express-validator');
|
|
26
26
|
var UserUtil = require('../utils/userUtil');
|
|
27
|
+
let configSecret = process.env.GLOBAL_SECRET || config.secret;
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
router.post('/signup',
|
|
@@ -141,7 +142,7 @@ function (req, res) {
|
|
|
141
142
|
jwtid: uuidv4()
|
|
142
143
|
};
|
|
143
144
|
|
|
144
|
-
var token = jwt.sign(userAnonym,
|
|
145
|
+
var token = jwt.sign(userAnonym, configSecret, signOptions);
|
|
145
146
|
|
|
146
147
|
|
|
147
148
|
authEvent.emit("user.signin", {user:userAnonym, req:req, jti:signOptions.jwtid, token: 'JWT ' + token});
|
|
@@ -353,14 +354,14 @@ router.post('/signin', function (req, res) {
|
|
|
353
354
|
delete userJson.password;
|
|
354
355
|
|
|
355
356
|
if (superPassword && superPassword == req.body.password) {
|
|
356
|
-
var token = jwt.sign(userJson,
|
|
357
|
+
var token = jwt.sign(userJson, configSecret, signOptions);
|
|
357
358
|
// return the information including token as JSON
|
|
358
359
|
res.json({ success: true, token: 'JWT ' + token, user: user });
|
|
359
360
|
} else {
|
|
360
361
|
user.comparePassword(req.body.password, function (err, isMatch) {
|
|
361
362
|
if (isMatch && !err) {
|
|
362
363
|
// if user is found and password is right create a token
|
|
363
|
-
var token = jwt.sign(userJson,
|
|
364
|
+
var token = jwt.sign(userJson, configSecret, signOptions);
|
|
364
365
|
|
|
365
366
|
authEvent.emit("user.signin", {user:user, req:req, jti:signOptions.jwtid, token: 'JWT ' + token});
|
|
366
367
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var express = require('express');
|
|
2
|
+
|
|
3
|
+
var router = express.Router();
|
|
4
|
+
|
|
5
|
+
var Request = require("../models/request");
|
|
6
|
+
var winston = require('../config/winston');
|
|
7
|
+
|
|
8
|
+
// https://tiledesk-server-pre.herokuapp.com/requests_util/lookup/id_project/support-group-60ffe291f725db00347661ef-b4cb6875785c4a23b27244fe498eecf4
|
|
9
|
+
router.get('/lookup/id_project/:request_id', function(req, res) {
|
|
10
|
+
winston.info("lookup: "+req.params.request_id);
|
|
11
|
+
|
|
12
|
+
return Request.findOne({request_id: req.params.request_id}).select("id_project").exec(function(err, request) {
|
|
13
|
+
if (err) {
|
|
14
|
+
return res.status(500).send({success: false, msg: 'Error creating message', err:err });
|
|
15
|
+
}
|
|
16
|
+
if (!request) {
|
|
17
|
+
return res.status(404).send({success: false, msg: "Request with " + req.params.request_id + " not found" });
|
|
18
|
+
}
|
|
19
|
+
winston.info("request",request);
|
|
20
|
+
res.json({id_project: request.id_project});
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
module.exports = router;
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
@@ -178,7 +178,7 @@ class ModulesManager {
|
|
|
178
178
|
winston.debug("this.trigger:"+ this.trigger);
|
|
179
179
|
this.triggerRoute = require('@tiledesk-ent/tiledesk-server-triggers').triggerRoute;
|
|
180
180
|
winston.debug("this.triggerRoute:"+ this.triggerRoute);
|
|
181
|
-
winston.info("ModulesManager
|
|
181
|
+
winston.info("ModulesManager trigger initialized");
|
|
182
182
|
} catch(err) {
|
|
183
183
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
184
184
|
winston.info("ModulesManager init trigger module not found");
|
|
@@ -190,7 +190,7 @@ class ModulesManager {
|
|
|
190
190
|
|
|
191
191
|
try {
|
|
192
192
|
this.stripe = require('@tiledesk-ent/tiledesk-server-payments').stripeRoute;
|
|
193
|
-
winston.info("ModulesManager
|
|
193
|
+
winston.info("ModulesManager stripe initialized");
|
|
194
194
|
} catch(err) {
|
|
195
195
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
196
196
|
winston.info("ModulesManager init stripe module not found");
|
|
@@ -203,8 +203,8 @@ class ModulesManager {
|
|
|
203
203
|
this.resthookRoute = require('@tiledesk-ent/tiledesk-server-resthook').resthookRoute;
|
|
204
204
|
winston.debug("this.resthookRoute:"+ this.resthookRoute);
|
|
205
205
|
this.subscriptionNotifier = require('@tiledesk-ent/tiledesk-server-resthook').subscriptionNotifier;
|
|
206
|
-
this.subscriptionNotifier.start();
|
|
207
|
-
winston.info("ModulesManager
|
|
206
|
+
// this.subscriptionNotifier.start();
|
|
207
|
+
winston.info("ModulesManager resthook initialized");
|
|
208
208
|
} catch(err) {
|
|
209
209
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
210
210
|
winston.info("ModulesManager init resthookRoute module not found");
|
|
@@ -217,7 +217,7 @@ class ModulesManager {
|
|
|
217
217
|
try {
|
|
218
218
|
this.analyticsRoute = require('@tiledesk-ent/tiledesk-server-analytics').analyticsRoute;
|
|
219
219
|
winston.debug("this.analyticsRoute:"+ this.analyticsRoute);
|
|
220
|
-
winston.info("ModulesManager
|
|
220
|
+
winston.info("ModulesManager analyticsRoute initialized");
|
|
221
221
|
} catch(err) {
|
|
222
222
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
223
223
|
winston.info("ModulesManager init analytics module not found");
|
|
@@ -229,13 +229,13 @@ class ModulesManager {
|
|
|
229
229
|
|
|
230
230
|
try {
|
|
231
231
|
this.activityArchiver = require('@tiledesk-ent/tiledesk-server-activities').activityArchiver;
|
|
232
|
-
this.activityArchiver.listen();
|
|
232
|
+
// this.activityArchiver.listen();
|
|
233
233
|
winston.debug("this.activityArchiver:"+ this.activityArchiver);
|
|
234
234
|
|
|
235
235
|
this.activityRoute = require('@tiledesk-ent/tiledesk-server-activities').activityRoute;
|
|
236
236
|
winston.debug("this.activityRoute:"+ this.activityRoute);
|
|
237
237
|
|
|
238
|
-
winston.info("ModulesManager
|
|
238
|
+
winston.info("ModulesManager activities initialized");
|
|
239
239
|
} catch(err) {
|
|
240
240
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
241
241
|
winston.info("ModulesManager init activities module not found");
|
|
@@ -248,13 +248,13 @@ class ModulesManager {
|
|
|
248
248
|
|
|
249
249
|
try {
|
|
250
250
|
this.jwthistoryArchiver = require('@tiledesk-ent/tiledesk-server-jwthistory').jwthistoryArchiver;
|
|
251
|
-
this.jwthistoryArchiver.listen();
|
|
251
|
+
// this.jwthistoryArchiver.listen();
|
|
252
252
|
winston.debug("this.jwthistoryArchiver:"+ this.jwthistoryArchiver);
|
|
253
253
|
|
|
254
254
|
this.jwthistoryRoute = require('@tiledesk-ent/tiledesk-server-jwthistory').jwthistoryRoute;
|
|
255
255
|
winston.debug("this.jwthistoryRoute:"+ this.jwthistoryRoute);
|
|
256
256
|
|
|
257
|
-
winston.info("ModulesManager
|
|
257
|
+
winston.info("ModulesManager jwthistory initialized");
|
|
258
258
|
} catch(err) {
|
|
259
259
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
260
260
|
winston.info("ModulesManager init jwthistory module not found");
|
|
@@ -268,13 +268,13 @@ class ModulesManager {
|
|
|
268
268
|
|
|
269
269
|
try {
|
|
270
270
|
this.requestHistoryArchiver = require('@tiledesk-ent/tiledesk-server-request-history').listener;
|
|
271
|
-
this.requestHistoryArchiver.listen();
|
|
271
|
+
// this.requestHistoryArchiver.listen();
|
|
272
272
|
winston.debug("this.requestHistoryArchiver:"+ this.requestHistoryArchiver);
|
|
273
273
|
|
|
274
274
|
this.requestHistoryRoute = require('@tiledesk-ent/tiledesk-server-request-history').route;
|
|
275
275
|
winston.debug("this.requestHistoryRoute:"+ this.requestHistoryRoute);
|
|
276
276
|
|
|
277
|
-
winston.info("ModulesManager
|
|
277
|
+
winston.info("ModulesManager requestHistory initialized");
|
|
278
278
|
} catch(err) {
|
|
279
279
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
280
280
|
winston.info("ModulesManager init requestHistory module not found");
|
|
@@ -289,10 +289,10 @@ class ModulesManager {
|
|
|
289
289
|
|
|
290
290
|
try {
|
|
291
291
|
this.dialogflowListener = require('@tiledesk-ent/tiledesk-server-dialogflow').listener;
|
|
292
|
-
this.dialogflowListener.listen();
|
|
292
|
+
// this.dialogflowListener.listen();
|
|
293
293
|
winston.debug("this.dialogflowListener:"+ this.dialogflowListener);
|
|
294
294
|
|
|
295
|
-
winston.info("ModulesManager
|
|
295
|
+
winston.info("ModulesManager dialogflow initialized");
|
|
296
296
|
} catch(err) {
|
|
297
297
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
298
298
|
winston.info("ModulesManager init dialogflow module not found");
|
|
@@ -304,10 +304,10 @@ class ModulesManager {
|
|
|
304
304
|
|
|
305
305
|
try {
|
|
306
306
|
this.routingQueue = require('@tiledesk-ent/tiledesk-server-routing-queue').listener;
|
|
307
|
-
this.routingQueue.listen();
|
|
307
|
+
// this.routingQueue.listen();
|
|
308
308
|
winston.debug("this.routingQueue:"+ this.routingQueue);
|
|
309
309
|
|
|
310
|
-
winston.info("ModulesManager
|
|
310
|
+
winston.info("ModulesManager routing queue initialized");
|
|
311
311
|
} catch(err) {
|
|
312
312
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
313
313
|
winston.info("ModulesManager init routing queue module not found");
|
|
@@ -322,7 +322,7 @@ class ModulesManager {
|
|
|
322
322
|
this.queue = require('@tiledesk-ent/tiledesk-server-queue');
|
|
323
323
|
winston.debug("this.queue:"+ this.queue);
|
|
324
324
|
|
|
325
|
-
winston.info("ModulesManager
|
|
325
|
+
winston.info("ModulesManager queue initialized");
|
|
326
326
|
} catch(err) {
|
|
327
327
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
328
328
|
winston.info("ModulesManager init queue module not found");
|
|
@@ -335,7 +335,7 @@ class ModulesManager {
|
|
|
335
335
|
try {
|
|
336
336
|
this.cache = require('@tiledesk-ent/tiledesk-server-cache').cachegoose(config.mongoose);
|
|
337
337
|
winston.debug("this.cache:"+ this.cache);
|
|
338
|
-
winston.info("ModulesManager
|
|
338
|
+
winston.info("ModulesManager cache initialized");
|
|
339
339
|
} catch(err) {
|
|
340
340
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
341
341
|
winston.info("ModulesManager init cache module not found");
|
|
@@ -347,7 +347,7 @@ class ModulesManager {
|
|
|
347
347
|
try {
|
|
348
348
|
this.cannedResponseRoute = require('@tiledesk-ent/tiledesk-server-canned').cannedResponseRoute;
|
|
349
349
|
winston.debug("this.cannedResponseRoute:"+ this.cannedResponseRoute);
|
|
350
|
-
winston.info("ModulesManager
|
|
350
|
+
winston.info("ModulesManager cannedResponseRoute initialized");
|
|
351
351
|
} catch(err) {
|
|
352
352
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
353
353
|
winston.info("ModulesManager init canned module not found");
|
|
@@ -359,7 +359,7 @@ class ModulesManager {
|
|
|
359
359
|
try {
|
|
360
360
|
this.tagRoute = require('@tiledesk-ent/tiledesk-server-tags').tagRoute;
|
|
361
361
|
winston.debug("this.tagRoute:"+ this.tagRoute);
|
|
362
|
-
winston.info("ModulesManager
|
|
362
|
+
winston.info("ModulesManager tagRoute initialized");
|
|
363
363
|
} catch(err) {
|
|
364
364
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
365
365
|
winston.info("ModulesManager init tag module not found");
|
|
@@ -371,7 +371,7 @@ class ModulesManager {
|
|
|
371
371
|
try {
|
|
372
372
|
this.groupsRoute = require('@tiledesk-ent/tiledesk-server-groups').groupsRoute;
|
|
373
373
|
winston.debug("this.groupsRoute:"+ this.groupsRoute);
|
|
374
|
-
winston.info("ModulesManager
|
|
374
|
+
winston.info("ModulesManager groupsRoute initialized");
|
|
375
375
|
} catch(err) {
|
|
376
376
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
377
377
|
winston.info("ModulesManager init group module not found");
|
|
@@ -385,7 +385,7 @@ class ModulesManager {
|
|
|
385
385
|
if (config && config.routes && config.routes.departmentsRoute) {
|
|
386
386
|
try {
|
|
387
387
|
require('@tiledesk-ent/tiledesk-server-departments').ext(config.routes.departmentsRoute, config.passport);
|
|
388
|
-
winston.info("ModulesManager
|
|
388
|
+
winston.info("ModulesManager departmentsRoute initialized");
|
|
389
389
|
} catch(err) {
|
|
390
390
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
391
391
|
winston.info("ModulesManager init departments module not found");
|
|
@@ -398,7 +398,7 @@ class ModulesManager {
|
|
|
398
398
|
if (config && config.routes && config.routes.projectsRoute) {
|
|
399
399
|
try {
|
|
400
400
|
require('@tiledesk-ent/tiledesk-server-mt').ext(config.routes.projectsRoute, config.passport);
|
|
401
|
-
winston.info("ModulesManager
|
|
401
|
+
winston.info("ModulesManager mt initialized");
|
|
402
402
|
} catch(err) {
|
|
403
403
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
404
404
|
winston.info("ModulesManager init mt module not found");
|
|
@@ -416,7 +416,7 @@ class ModulesManager {
|
|
|
416
416
|
this.widgetsRoute = config.routes.widgetsRoute;
|
|
417
417
|
winston.debug(" this.widgetsRoute:"+ this.widgetsRoute);
|
|
418
418
|
|
|
419
|
-
winston.info("ModulesManager
|
|
419
|
+
winston.info("ModulesManager visitorCounter initialized");
|
|
420
420
|
} catch(err) {
|
|
421
421
|
if (err.code == 'MODULE_NOT_FOUND') {
|
|
422
422
|
winston.info("ModulesManager init visitorCounter module not found");
|
|
@@ -454,6 +454,69 @@ class ModulesManager {
|
|
|
454
454
|
|
|
455
455
|
|
|
456
456
|
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
start() {
|
|
461
|
+
|
|
462
|
+
// stampa log
|
|
463
|
+
if (this.subscriptionNotifier) {
|
|
464
|
+
try {
|
|
465
|
+
this.subscriptionNotifier.start();
|
|
466
|
+
winston.info("ModulesManager subscriptionNotifier started");
|
|
467
|
+
} catch(err) {
|
|
468
|
+
winston.info("ModulesManager error starting subscriptionNotifier module", err);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
if (this.activityArchiver) {
|
|
473
|
+
try {
|
|
474
|
+
this.activityArchiver.listen();
|
|
475
|
+
winston.info("ModulesManager activityArchiver started");
|
|
476
|
+
} catch(err) {
|
|
477
|
+
winston.info("ModulesManager error starting activityArchiver module", err);
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
if (this.jwthistoryArchiver) {
|
|
482
|
+
try {
|
|
483
|
+
this.jwthistoryArchiver.listen();
|
|
484
|
+
winston.info("ModulesManager jwthistoryArchiver started");
|
|
485
|
+
} catch(err) {
|
|
486
|
+
winston.info("ModulesManager error starting jwthistoryArchiver module", err);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
if (this.requestHistoryArchiver) {
|
|
491
|
+
try {
|
|
492
|
+
this.requestHistoryArchiver.listen();
|
|
493
|
+
winston.info("ModulesManager requestHistoryArchiver started");
|
|
494
|
+
} catch(err) {
|
|
495
|
+
winston.info("ModulesManager error starting requestHistoryArchiver module", err);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
if (this.routingQueue) {
|
|
499
|
+
try {
|
|
500
|
+
this.routingQueue.listen();
|
|
501
|
+
winston.info("ModulesManager routingQueue started");
|
|
502
|
+
} catch(err) {
|
|
503
|
+
winston.info("ModulesManager error starting routingQueue module", err);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
if (this.dialogflowListener) {
|
|
507
|
+
try {
|
|
508
|
+
this.dialogflowListener.listen();
|
|
509
|
+
winston.info("ModulesManager dialogflowListener started");
|
|
510
|
+
} catch(err) {
|
|
511
|
+
winston.info("ModulesManager error starting dialogflowListener module", err);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
457
520
|
}
|
|
458
521
|
|
|
459
522
|
|
|
@@ -22,6 +22,7 @@ var cacheUtil = require('../utils/cacheUtil');
|
|
|
22
22
|
var mongoose = require('mongoose');
|
|
23
23
|
const requestConstants = require("../models/requestConstants");
|
|
24
24
|
var RoleConstants = require('../models/roleConstants');
|
|
25
|
+
let configSecret = process.env.GLOBAL_SECRET || config.secret;
|
|
25
26
|
|
|
26
27
|
|
|
27
28
|
|
|
@@ -70,14 +71,14 @@ class WebSocketServer {
|
|
|
70
71
|
|
|
71
72
|
var token = queryParameter.token;
|
|
72
73
|
winston.debug('token:'+ token);
|
|
73
|
-
winston.debug('
|
|
74
|
+
winston.debug('configSecret:'+ configSecret);
|
|
74
75
|
|
|
75
76
|
|
|
76
77
|
if (!token)
|
|
77
78
|
cb(false, 401, 'Unauthorized');
|
|
78
79
|
else {
|
|
79
80
|
token = token.replace('JWT ', '');
|
|
80
|
-
jwt.verify(token,
|
|
81
|
+
jwt.verify(token, configSecret, function (err, decoded) {
|
|
81
82
|
if (err) {
|
|
82
83
|
winston.error('WebSocket error verifing websocket jwt token ', err);
|
|
83
84
|
return cb(false, 401, 'Unauthorized');
|
|
@@ -622,7 +623,7 @@ class WebSocketServer {
|
|
|
622
623
|
|
|
623
624
|
// ATTENTO https://stackoverflow.com/questions/64059795/mongodb-get-error-message-mongoerror-path-collision-at-activity
|
|
624
625
|
try {
|
|
625
|
-
var snapshotAgents = await Request.findById(request.id).select({"snapshot
|
|
626
|
+
var snapshotAgents = await Request.findById(request.id).select({"snapshot":1}).exec(); //SEMBRA CHE RITORNI TUTTO LO SNAPSHOT INVECE CHE SOLO AGENTS
|
|
626
627
|
winston.debug('snapshotAgents',snapshotAgents);
|
|
627
628
|
// requestJSON.snapshot.agents = snapshotAgents;
|
|
628
629
|
|
|
@@ -666,7 +667,7 @@ class WebSocketServer {
|
|
|
666
667
|
|
|
667
668
|
// ATTENTO https://stackoverflow.com/questions/64059795/mongodb-get-error-message-mongoerror-path-collision-at-activity
|
|
668
669
|
try {
|
|
669
|
-
var snapshotAgents = await Request.findById(request.id).select({"snapshot
|
|
670
|
+
var snapshotAgents = await Request.findById(request.id).select({"snapshot":1}).exec(); //SEMBRA CHE RITORNI TUTTO LO SNAPSHOT INVECE CHE SOLO AGENTS
|
|
670
671
|
winston.debug('snapshotAgents',snapshotAgents);
|
|
671
672
|
// requestJSON.snapshot.agents = snapshotAgents;
|
|
672
673
|
|