@tiledesk/tiledesk-server 2.17.3 → 2.18.1

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.
Files changed (50) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/app.js +2 -0
  3. package/archive.sh +92 -0
  4. package/channels/chat21/chat21WebHook.js +6 -1
  5. package/event/authEvent.js +16 -0
  6. package/event/projectUserEvent.js +39 -0
  7. package/event/roleEvent.js +9 -0
  8. package/middleware/has-role.js +160 -121
  9. package/middleware/passport.js +180 -179
  10. package/migrations/1757601159298-project_user_role_type.js +45 -0
  11. package/models/department.js +3 -0
  12. package/models/groupMemberSchama.js +19 -0
  13. package/models/kb_setting.js +6 -2
  14. package/models/permissionConstants.js +19 -0
  15. package/models/project_user.js +86 -8
  16. package/models/request.js +1 -0
  17. package/models/role.js +31 -0
  18. package/models/roleConstants.js +2 -0
  19. package/package.json +1 -1
  20. package/pubmodules/analytics/analytics.js +2 -2
  21. package/pubmodules/cache/mongoose-cachegoose-fn.js +37 -0
  22. package/pubmodules/canned/cannedResponseRoute.js +34 -6
  23. package/pubmodules/routing-queue/listener.js +7 -1
  24. package/pubmodules/trigger/rulesTrigger.js +1 -6
  25. package/routes/auth.js +3 -1
  26. package/routes/department.js +7 -1
  27. package/routes/kb.js +25 -1
  28. package/routes/message.js +4 -1
  29. package/routes/project.js +41 -3
  30. package/routes/project_user.js +62 -11
  31. package/routes/request.js +32 -30
  32. package/routes/roles.js +151 -0
  33. package/routes/unanswered.js +1 -1
  34. package/routes/webhook.js +18 -13
  35. package/routes/widget.js +3 -1
  36. package/services/cacheEnabler.js +5 -8
  37. package/services/departmentService.js +39 -11
  38. package/services/emailService.js +2 -2
  39. package/services/pendingInvitationService.js +2 -0
  40. package/services/projectService.js +3 -1
  41. package/services/projectUserService.js +67 -4
  42. package/services/subscriptionNotifierQueued.js +8 -0
  43. package/services/updateRequestSnapshotQueued.js +0 -3
  44. package/test/departmentService.js +5 -0
  45. package/test/messageRoute.js +7 -4
  46. package/test/projectUserRoute.js +116 -0
  47. package/test/requestService.js +7 -3
  48. package/test-int/bot.js +3 -2
  49. package/websocket/webSocketServer.js +273 -225
  50. package/routes/auth_newjwt.js +0 -648
@@ -48,6 +48,7 @@ describe('DepartmentService()', function () {
48
48
  id_project: savedProject._id,
49
49
  id_user: savedUser2._id,
50
50
  role: roleConstants.AGENT,
51
+ roleType : RoleConstants.TYPE_AGENTS,
51
52
  user_available: true,
52
53
  createdBy: savedUser2._id,
53
54
  updatedBy: savedUser2._id,
@@ -62,6 +63,7 @@ describe('DepartmentService()', function () {
62
63
  id_project: savedProject._id,
63
64
  id_user: savedUser3._id,
64
65
  role: roleConstants.AGENT,
66
+ roleType : RoleConstants.TYPE_AGENTS,
65
67
  user_available: true,
66
68
  createdBy: savedUser3._id,
67
69
  updatedBy: savedUser3._id,
@@ -126,6 +128,7 @@ describe('DepartmentService()', function () {
126
128
  id_project: savedProject._id,
127
129
  id_user: savedUser2._id,
128
130
  role: roleConstants.AGENT,
131
+ roleType : RoleConstants.TYPE_AGENTS,
129
132
  user_available: true,
130
133
  createdBy: savedUser2._id,
131
134
  updatedBy: savedUser2._id,
@@ -247,6 +250,7 @@ describe('DepartmentService()', function () {
247
250
  id_project: savedProject._id,
248
251
  id_user: savedUser2._id,
249
252
  role: roleConstants.AGENT,
253
+ roleType : RoleConstants.TYPE_AGENTS,
250
254
  user_available: false,
251
255
  createdBy: savedUser2._id,
252
256
  updatedBy: savedUser2._id,
@@ -325,6 +329,7 @@ describe('DepartmentService()', function () {
325
329
  id_project: savedProject._id,
326
330
  id_user: savedUser2._id,
327
331
  role: roleConstants.AGENT,
332
+ roleType : RoleConstants.TYPE_AGENTS,
328
333
  user_available: false,
329
334
  createdBy: savedUser2._id,
330
335
  updatedBy: savedUser2._id,
@@ -9,7 +9,7 @@ var userService = require('../services/userService');
9
9
  var leadService = require('../services/leadService');
10
10
  var messageService = require('../services/messageService');
11
11
  var Project_user = require("../models/project_user");
12
- var roleConstants = require('../models/roleConstants');
12
+ var RoleConstants = require('../models/roleConstants');
13
13
  const uuidv4 = require('uuid/v4');
14
14
 
15
15
  //Require the dev-dependencies
@@ -223,7 +223,8 @@ describe('MessageRoute', () => {
223
223
  // _id: new mongoose.Types.ObjectId(),
224
224
  id_project: savedProject._id,
225
225
  id_user: savedUser2._id,
226
- role: roleConstants.AGENT,
226
+ role: RoleConstants.AGENT,
227
+ roleType : RoleConstants.TYPE_AGENTS,
227
228
  user_available: true,
228
229
  createdBy: savedUser2._id,
229
230
  updatedBy: savedUser2._id,
@@ -298,7 +299,8 @@ describe('MessageRoute', () => {
298
299
  // _id: new mongoose.Types.ObjectId(),
299
300
  id_project: savedProject._id,
300
301
  uuid_user: uid,
301
- role: roleConstants.USER,
302
+ role: RoleConstants.USER,
303
+ roleType : RoleConstants.TYPE_USERS,
302
304
  user_available: true,
303
305
  createdBy: savedUser._id,
304
306
  updatedBy: savedUser._id,
@@ -875,7 +877,8 @@ describe('MessageRoute', () => {
875
877
  // _id: new mongoose.Types.ObjectId(),
876
878
  id_project: savedProject._id,
877
879
  id_user: savedUser2._id,
878
- role: roleConstants.USER,
880
+ role: RoleConstants.USER,
881
+ roleType : RoleConstants.TYPE_USERS,
879
882
  user_available: true,
880
883
  createdBy: savedUser2._id,
881
884
  updatedBy: savedUser2._id,
@@ -0,0 +1,116 @@
1
+ //During the test the env variable is set to test
2
+ process.env.NODE_ENV = 'test';
3
+ process.env.LOG_LEVEL = 'error';
4
+ process.env.ADMIN_EMAIL = "admin@tiledesk.com";
5
+
6
+ let log = false;
7
+ var projectService = require('../services/projectService');
8
+ var userService = require('../services/userService');
9
+
10
+ //Require the dev-dependencies
11
+ let chai = require('chai');
12
+ let chaiHttp = require('chai-http');
13
+ let server = require('../app');
14
+ let should = chai.should();
15
+ var fs = require('fs');
16
+ const path = require('path');
17
+
18
+ // chai.config.includeStack = true;
19
+
20
+ var expect = chai.expect;
21
+ var assert = chai.assert;
22
+
23
+ chai.use(chaiHttp);
24
+
25
+ describe('ProjectUserRoute', () => {
26
+
27
+ describe('Delete', () => {
28
+
29
+ it('delete-project-user-and-remove-from-group', (done) => {
30
+
31
+ let email_owner = "owner-signup-" + Date.now() + "@email.com";
32
+ let email_agent = "agent-signup-" + Date.now() + "@email.com";
33
+ var pwd = "pwd";
34
+
35
+ userService.signup(email_owner, pwd, "Owner Firstname", "Owner Lastname").then((owner) => {
36
+ userService.signup(email_agent, pwd, "Agent Firstname", "Agent Lastname").then((agent) => {
37
+ projectService.create("test-project", owner._id).then((project) => {
38
+
39
+ // Invite agent on the project
40
+ chai.request(server)
41
+ .post('/' + project._id + "/project_users/invite")
42
+ .auth(email_owner, pwd)
43
+ .set('content-type', 'application/json')
44
+ .send({ email: email_agent, role: "agent", userAvailable: false })
45
+ .end((err, res) => {
46
+
47
+ if (err) { console.error("err: ", err); }
48
+ if (log) { console.log("Invite agent to project res.body: ", res.body) };
49
+
50
+ res.should.have.status(200);
51
+ res.body.should.be.a('object');
52
+ expect(res.body.id_user).to.equal(agent._id.toString());
53
+
54
+ let pu_id = res.body._id;
55
+
56
+ // Create group
57
+ chai.request(server)
58
+ .post('/' + project._id + "/groups")
59
+ .auth(email_owner, pwd)
60
+ .set('content-type', 'application/json')
61
+ .send({ name: "test-group", members: [owner._id, agent._id] })
62
+ .end((err, res) => {
63
+
64
+ if (err) { console.error("err: ", err); }
65
+ if (log) { console.log("Create group res.body: ", res.body) };
66
+
67
+ res.should.have.status(200);
68
+ res.body.should.be.a('object');
69
+ expect(res.body.name).to.equal("test-group");
70
+ expect(res.body.members.length).to.equal(2);
71
+ expect(res.body.members[0]).to.equal(owner._id.toString())
72
+ expect(res.body.members[1]).to.equal(agent._id.toString())
73
+
74
+ let group_id = res.body._id;
75
+
76
+ // Remove project user from project
77
+ chai.request(server)
78
+ .delete('/' + project._id + '/project_users/' + pu_id + '?soft=true')
79
+ .auth(email_owner, pwd)
80
+ .set('content-type', 'application/json')
81
+ .end((err, res) => {
82
+
83
+ if (err) { console.error("err: ", err); }
84
+ if (log) { console.log("Delete project user res.body: ", res.body) };
85
+
86
+ res.should.have.status(200);
87
+ res.body.should.be.a('object');
88
+
89
+ // Check group
90
+ chai.request(server)
91
+ .get('/' + project._id + '/groups/' + group_id)
92
+ .auth(email_owner, pwd)
93
+ .set('content-type', 'application/json')
94
+ .end((err, res) => {
95
+ if (err) { console.error("err: ", err); }
96
+ if (log) { console.log("Check group res.body: ", res.body) };
97
+
98
+ res.should.have.status(200);
99
+ res.body.should.be.a('object');
100
+ expect(res.body.members.length).to.equal(1);
101
+ expect(res.body.members[0]).to.equal(owner._id.toString())
102
+
103
+ done()
104
+ })
105
+
106
+ })
107
+ })
108
+ })
109
+ })
110
+ })
111
+ })
112
+ }).timeout(5000);
113
+
114
+ })
115
+
116
+ });
@@ -10,6 +10,7 @@ let should = chai.should();
10
10
  var config = require('../config/database');
11
11
  var mongoose = require('mongoose');
12
12
  var winston = require('../config/winston');
13
+ var RoleConstants = require('../models/roleConstants');
13
14
 
14
15
  let log = false;
15
16
 
@@ -991,7 +992,8 @@ describe('RequestService', function () {
991
992
  // _id: new mongoose.Types.ObjectId(),
992
993
  id_project: savedProject._id.toString(),
993
994
  id_user: savedUser2._id.toString(),
994
- role: "agent",
995
+ role: RoleConstants.AGENT,
996
+ roleType : RoleConstants.TYPE_AGENTS,
995
997
  user_available: false,
996
998
  createdBy: userid,
997
999
  updatedBy: userid
@@ -1073,7 +1075,8 @@ describe('RequestService', function () {
1073
1075
  // _id: new mongoose.Types.ObjectId(),
1074
1076
  id_project: savedProject._id.toString(),
1075
1077
  id_user: savedUser2._id.toString(),
1076
- role: "agent",
1078
+ role: RoleConstants.AGENT,
1079
+ roleType : RoleConstants.TYPE_AGENTS,
1077
1080
  user_available: false,
1078
1081
  createdBy: userid,
1079
1082
  updatedBy: userid
@@ -1338,7 +1341,8 @@ describe('RequestService', function () {
1338
1341
  // _id: new mongoose.Types.ObjectId(),
1339
1342
  id_project: savedProject._id.toString(),
1340
1343
  id_user: savedUser2._id.toString(),
1341
- role: "agent",
1344
+ role: RoleConstants.AGENT,
1345
+ roleType : RoleConstants.TYPE_AGENTS,
1342
1346
  user_available: true,
1343
1347
  createdBy: userid,
1344
1348
  updatedBy: userid
package/test-int/bot.js CHANGED
@@ -16,7 +16,7 @@ var Department = require('../models/department');
16
16
  var Faq = require('../models/faq');
17
17
  var faqBotSupport = require('../services/faqBotSupport');
18
18
  var Project_user = require("../models/project_user");
19
-
19
+ var RoleConstants = require('../models/roleConstants');
20
20
  var expect = chai.expect;
21
21
  var assert = chai.assert;
22
22
 
@@ -255,7 +255,8 @@ describe('bot', () => {
255
255
  // _id: new mongoose.Types.ObjectId(),
256
256
  id_project: savedProject._id.toString(),
257
257
  id_user: savedUser2._id.toString(),
258
- role: "agent",
258
+ role: RoleConstants.AGENT,
259
+ roleType : RoleConstants.TYPE_AGENTS,
259
260
  user_available: true,
260
261
  createdBy: savedUser._id,
261
262
  updatedBy: savedUser._id