@plusscommunities/pluss-maintenance-aws 2.0.3-auth.0 → 2.0.3
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/createJob.js +5 -4
- package/deleteJob.js +3 -3
- package/editJob.js +45 -50
- package/editJobStatus.js +5 -9
- package/editNote.js +6 -6
- package/feature.config.js +14 -46
- package/getData.js +13 -86
- package/getJob.js +10 -4
- package/package-lock.json +5974 -1866
- package/package.json +17 -10
- package/requests/assignRequest.js +100 -0
- package/requests/getAssignees.js +39 -0
- package/requests/getRequests.js +99 -0
- package/requests/helper/hasRequestPermission.js +24 -0
- package/requests/helper/isValidAssignee.js +18 -0
- package/updateData.js +33 -0
package/createJob.js
CHANGED
|
@@ -5,7 +5,7 @@ const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
|
5
5
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
6
6
|
const addMaintenanceJob = require("./db/maintenance/addMaintenanceJob");
|
|
7
7
|
const validateSiteAccess = require("@plusscommunities/pluss-core-aws/helper/auth/validateSiteAccess");
|
|
8
|
-
const
|
|
8
|
+
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
9
9
|
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
10
10
|
const sendJobEmail = require("./sendJobEmail");
|
|
11
11
|
const logAnalyticsActivity = require("@plusscommunities/pluss-core-aws/db/analytics/logAnalyticsActivity");
|
|
@@ -19,7 +19,7 @@ module.exports.createJob = (event, context, callback) => {
|
|
|
19
19
|
if (!authorised) {
|
|
20
20
|
return callback(
|
|
21
21
|
null,
|
|
22
|
-
generateJsonResponse(
|
|
22
|
+
generateJsonResponse(403, { fail: true, error: "not authorised" })
|
|
23
23
|
);
|
|
24
24
|
}
|
|
25
25
|
if (
|
|
@@ -28,13 +28,13 @@ module.exports.createJob = (event, context, callback) => {
|
|
|
28
28
|
_.isUndefined(data.room) ||
|
|
29
29
|
_.isUndefined(data.description)
|
|
30
30
|
) {
|
|
31
|
-
console.error("insufficient input
|
|
31
|
+
console.error("insufficient input", data.userID);
|
|
32
32
|
return callback(
|
|
33
33
|
null,
|
|
34
34
|
generateJsonResponse(422, { error: "Insufficient input" })
|
|
35
35
|
);
|
|
36
36
|
}
|
|
37
|
-
const user = await
|
|
37
|
+
const user = await getUserPreviewFromReq(event);
|
|
38
38
|
|
|
39
39
|
addMaintenanceJob(
|
|
40
40
|
user.id,
|
|
@@ -85,6 +85,7 @@ module.exports.createJob = (event, context, callback) => {
|
|
|
85
85
|
null,
|
|
86
86
|
generateJsonResponse(200, {
|
|
87
87
|
success: true,
|
|
88
|
+
id,
|
|
88
89
|
searchResult: id,
|
|
89
90
|
})
|
|
90
91
|
);
|
package/deleteJob.js
CHANGED
|
@@ -5,8 +5,8 @@ const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/ge
|
|
|
5
5
|
const deleteRef = require("@plusscommunities/pluss-core-aws/db/common/deleteRef");
|
|
6
6
|
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
7
7
|
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
8
|
-
const getUserPreviewFromHeader = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromHeader");
|
|
9
8
|
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
9
|
+
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
10
10
|
|
|
11
11
|
module.exports.deleteJob = (event, context, callback) => {
|
|
12
12
|
init(config);
|
|
@@ -25,7 +25,7 @@ module.exports.deleteJob = (event, context, callback) => {
|
|
|
25
25
|
console.error("Authorization not valid");
|
|
26
26
|
callback(
|
|
27
27
|
null,
|
|
28
|
-
generateJsonResponse(
|
|
28
|
+
generateJsonResponse(403, {
|
|
29
29
|
error: {
|
|
30
30
|
message: "Authorization not valid.",
|
|
31
31
|
},
|
|
@@ -47,7 +47,7 @@ module.exports.deleteJob = (event, context, callback) => {
|
|
|
47
47
|
}
|
|
48
48
|
deleteRef("maintenance", "id", data.id)
|
|
49
49
|
.then(() => {
|
|
50
|
-
|
|
50
|
+
getUserPreviewFromReq(event).then((user) => {
|
|
51
51
|
publishActivity("DeleteMaintenanceJob", data.site, data.id, user, {
|
|
52
52
|
title: result.title,
|
|
53
53
|
description: result.description,
|
package/editJob.js
CHANGED
|
@@ -2,14 +2,14 @@ const _ = require("lodash");
|
|
|
2
2
|
const config = require("./config.json");
|
|
3
3
|
const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
4
4
|
const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
5
|
-
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
6
5
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
7
6
|
const sendJobEmail = require("./sendJobEmail");
|
|
8
7
|
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
9
8
|
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
10
|
-
const getUserPreviewFromHeader = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromHeader");
|
|
11
9
|
const editMaintenanceJob = require("./db/maintenance/editMaintenanceJob");
|
|
12
10
|
const { getConfig } = require("@plusscommunities/pluss-core-aws/config");
|
|
11
|
+
const hasRequestPermission = require("./requests/helper/hasRequestPermission");
|
|
12
|
+
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
13
13
|
|
|
14
14
|
module.exports.editJob = (event, context, callback) => {
|
|
15
15
|
init(config);
|
|
@@ -24,55 +24,50 @@ module.exports.editJob = (event, context, callback) => {
|
|
|
24
24
|
|
|
25
25
|
getRef("maintenance", "id", data.job.id)
|
|
26
26
|
.then((prevData) => {
|
|
27
|
-
|
|
28
|
-
(authorised)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
getUserPreviewFromHeader(event.headers.authkey).then((user) => {
|
|
39
|
-
editMaintenanceJob(data.job)
|
|
40
|
-
.then((result) => {
|
|
41
|
-
if (!getConfig().maintenanceInstantComplete) {
|
|
42
|
-
sendJobEmail(data.job, true);
|
|
43
|
-
publishActivity(
|
|
44
|
-
"EditMaintenanceJob",
|
|
45
|
-
data.site,
|
|
46
|
-
data.job.id,
|
|
47
|
-
user,
|
|
48
|
-
{ title: result.title, description: result.description }
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return callback(
|
|
53
|
-
null,
|
|
54
|
-
generateJsonResponse(200, {
|
|
55
|
-
success: true,
|
|
56
|
-
job: result,
|
|
57
|
-
})
|
|
58
|
-
);
|
|
59
|
-
})
|
|
60
|
-
.catch((error) => {
|
|
61
|
-
console.log(error);
|
|
62
|
-
console.error(
|
|
63
|
-
"Failed to edit maintenance node -->",
|
|
64
|
-
data.job.id
|
|
65
|
-
);
|
|
66
|
-
return callback(
|
|
67
|
-
null,
|
|
68
|
-
generateJsonResponse(422, {
|
|
69
|
-
error,
|
|
70
|
-
})
|
|
71
|
-
);
|
|
72
|
-
});
|
|
73
|
-
});
|
|
27
|
+
hasRequestPermission(event, prevData).then((authorised) => {
|
|
28
|
+
if (!authorised) {
|
|
29
|
+
console.error("Authorization not valid");
|
|
30
|
+
return callback(
|
|
31
|
+
null,
|
|
32
|
+
generateJsonResponse(422, {
|
|
33
|
+
error: { message: "not authorized." },
|
|
34
|
+
})
|
|
35
|
+
);
|
|
74
36
|
}
|
|
75
|
-
|
|
37
|
+
getUserPreviewFromReq(event).then((user) => {
|
|
38
|
+
editMaintenanceJob(data.job)
|
|
39
|
+
.then((result) => {
|
|
40
|
+
if (!getConfig().maintenanceInstantComplete) {
|
|
41
|
+
sendJobEmail(data.job, true);
|
|
42
|
+
publishActivity(
|
|
43
|
+
"EditMaintenanceJob",
|
|
44
|
+
data.site,
|
|
45
|
+
data.job.id,
|
|
46
|
+
user,
|
|
47
|
+
{ title: result.title, description: result.description }
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return callback(
|
|
52
|
+
null,
|
|
53
|
+
generateJsonResponse(200, {
|
|
54
|
+
success: true,
|
|
55
|
+
job: result,
|
|
56
|
+
})
|
|
57
|
+
);
|
|
58
|
+
})
|
|
59
|
+
.catch((error) => {
|
|
60
|
+
console.log(error);
|
|
61
|
+
console.error("Failed to edit maintenance node -->", data.job.id);
|
|
62
|
+
return callback(
|
|
63
|
+
null,
|
|
64
|
+
generateJsonResponse(422, {
|
|
65
|
+
error,
|
|
66
|
+
})
|
|
67
|
+
);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
});
|
|
76
71
|
})
|
|
77
72
|
.catch((error) => {
|
|
78
73
|
console.log("Fail on edit job authentication");
|
package/editJobStatus.js
CHANGED
|
@@ -5,12 +5,12 @@ const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
|
5
5
|
const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
6
6
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
7
7
|
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
8
|
-
const
|
|
9
|
-
const getUserPreviewFromHeader = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromHeader");
|
|
8
|
+
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
10
9
|
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
11
10
|
const publishNotifications = require("@plusscommunities/pluss-core-aws/db/notifications/publishNotifications");
|
|
12
11
|
const editMaintenanceJob = require("./db/maintenance/editMaintenanceJob");
|
|
13
12
|
const logAnalyticsActivity = require("@plusscommunities/pluss-core-aws/db/analytics/logAnalyticsActivity");
|
|
13
|
+
const hasRequestPermission = require("./requests/helper/hasRequestPermission");
|
|
14
14
|
|
|
15
15
|
module.exports.editJobStatus = async (event, context, callback) => {
|
|
16
16
|
init(config);
|
|
@@ -18,16 +18,12 @@ module.exports.editJobStatus = async (event, context, callback) => {
|
|
|
18
18
|
|
|
19
19
|
try {
|
|
20
20
|
const job = await getRef("maintenance", "id", data.id);
|
|
21
|
-
const authorised = await
|
|
22
|
-
event,
|
|
23
|
-
"maintenanceTracking",
|
|
24
|
-
job.site || job.location
|
|
25
|
-
);
|
|
21
|
+
const authorised = await hasRequestPermission(event, job);
|
|
26
22
|
if (!authorised) {
|
|
27
23
|
console.error("Authorization not valid");
|
|
28
24
|
return callback(
|
|
29
25
|
null,
|
|
30
|
-
generateJsonResponse(
|
|
26
|
+
generateJsonResponse(403, {
|
|
31
27
|
error: {
|
|
32
28
|
message: "Authorization not valid.",
|
|
33
29
|
},
|
|
@@ -35,7 +31,7 @@ module.exports.editJobStatus = async (event, context, callback) => {
|
|
|
35
31
|
);
|
|
36
32
|
}
|
|
37
33
|
|
|
38
|
-
const user = await
|
|
34
|
+
const user = await getUserPreviewFromReq(event);
|
|
39
35
|
|
|
40
36
|
// Update history
|
|
41
37
|
if (!job.history) job.history = [];
|
package/editNote.js
CHANGED
|
@@ -4,12 +4,12 @@ const moment = require("moment");
|
|
|
4
4
|
const config = require("./config.json");
|
|
5
5
|
const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
6
6
|
const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
7
|
-
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
8
7
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
9
8
|
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
10
9
|
const updateRef = require("@plusscommunities/pluss-core-aws/db/common/updateRef");
|
|
11
10
|
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
12
|
-
const
|
|
11
|
+
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
12
|
+
const hasRequestPermission = require("./requests/helper/hasRequestPermission");
|
|
13
13
|
|
|
14
14
|
module.exports.editNote = (event, context, callback) => {
|
|
15
15
|
init(config);
|
|
@@ -51,18 +51,18 @@ module.exports.editNote = (event, context, callback) => {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
getRef("maintenance", "id", data.id).then((job) => {
|
|
54
|
-
|
|
54
|
+
hasRequestPermission(event, job)
|
|
55
55
|
.then((authorised) => {
|
|
56
56
|
if (!authorised) {
|
|
57
57
|
console.error("Authorization not valid");
|
|
58
58
|
return callback(
|
|
59
59
|
null,
|
|
60
|
-
generateJsonResponse(
|
|
60
|
+
generateJsonResponse(403, {
|
|
61
61
|
error: { message: "not authorized." },
|
|
62
62
|
})
|
|
63
63
|
);
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
getUserPreviewFromReq(event).then((user) => {
|
|
66
66
|
let activityAction = "";
|
|
67
67
|
switch (data.action) {
|
|
68
68
|
case "AddNote":
|
|
@@ -91,7 +91,7 @@ module.exports.editNote = (event, context, callback) => {
|
|
|
91
91
|
if (!note) {
|
|
92
92
|
return callback(
|
|
93
93
|
null,
|
|
94
|
-
generateJsonResponse(
|
|
94
|
+
generateJsonResponse(404, {
|
|
95
95
|
error: { message: "Note not found" },
|
|
96
96
|
})
|
|
97
97
|
);
|
package/feature.config.js
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
exports.permissions = [
|
|
1
|
+
exports.permissions = [
|
|
2
|
+
"maintenanceTracking",
|
|
3
|
+
"maintenanceAssignment",
|
|
4
|
+
"maintenanceTypes",
|
|
5
|
+
];
|
|
2
6
|
|
|
3
7
|
exports.entity = {
|
|
4
8
|
key: "maintenancerequest",
|
|
@@ -120,51 +124,6 @@ exports.serverless = {
|
|
|
120
124
|
path: "requests/note",
|
|
121
125
|
method: "post",
|
|
122
126
|
},
|
|
123
|
-
{
|
|
124
|
-
name: "addTicket",
|
|
125
|
-
file: "ticketing/addTicket",
|
|
126
|
-
function: "addTicket",
|
|
127
|
-
memorySize: 256,
|
|
128
|
-
timeout: 10,
|
|
129
|
-
path: "tickets/add",
|
|
130
|
-
method: "post",
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
name: "editTicketStatus",
|
|
134
|
-
file: "ticketing/editTicketStatus",
|
|
135
|
-
function: "editTicketStatus",
|
|
136
|
-
memorySize: 256,
|
|
137
|
-
timeout: 10,
|
|
138
|
-
path: "tickets/status",
|
|
139
|
-
method: "post",
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
name: "deleteTicket",
|
|
143
|
-
file: "ticketing/deleteTicket",
|
|
144
|
-
function: "deleteTicket",
|
|
145
|
-
memorySize: 256,
|
|
146
|
-
timeout: 10,
|
|
147
|
-
path: "tickets/delete",
|
|
148
|
-
method: "post",
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
name: "getTickets",
|
|
152
|
-
file: "ticketing/getTickets",
|
|
153
|
-
function: "getTickets",
|
|
154
|
-
memorySize: 256,
|
|
155
|
-
timeout: 10,
|
|
156
|
-
path: "tickets/get",
|
|
157
|
-
method: "get",
|
|
158
|
-
},
|
|
159
|
-
{
|
|
160
|
-
name: "getTicket",
|
|
161
|
-
file: "ticketing/getTicket",
|
|
162
|
-
function: "getTicket",
|
|
163
|
-
memorySize: 256,
|
|
164
|
-
timeout: 10,
|
|
165
|
-
path: "tickets/get/{id}",
|
|
166
|
-
method: "get",
|
|
167
|
-
},
|
|
168
127
|
{
|
|
169
128
|
name: "getData",
|
|
170
129
|
file: "getData",
|
|
@@ -174,6 +133,15 @@ exports.serverless = {
|
|
|
174
133
|
path: "get/{action}",
|
|
175
134
|
method: "get",
|
|
176
135
|
},
|
|
136
|
+
{
|
|
137
|
+
name: "updateData",
|
|
138
|
+
file: "updateData",
|
|
139
|
+
function: "updateData",
|
|
140
|
+
memorySize: 256,
|
|
141
|
+
timeout: 10,
|
|
142
|
+
path: "update/{action}",
|
|
143
|
+
method: "post",
|
|
144
|
+
},
|
|
177
145
|
],
|
|
178
146
|
triggers: [
|
|
179
147
|
{
|
package/getData.js
CHANGED
|
@@ -1,91 +1,9 @@
|
|
|
1
|
-
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
2
1
|
const config = require("./config.json");
|
|
3
2
|
const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
4
3
|
const { log } = require("@plusscommunities/pluss-core-aws/helper");
|
|
5
|
-
const getSessionUser = require("@plusscommunities/pluss-core-aws/helper/auth/getSessionUser");
|
|
6
|
-
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
7
|
-
const validateSiteAccess = require("@plusscommunities/pluss-core-aws/helper/auth/validateSiteAccess");
|
|
8
4
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
9
|
-
|
|
10
|
-
const getRequests =
|
|
11
|
-
const qParams = event.queryStringParameters;
|
|
12
|
-
const logId = log("getRequests", "Params", qParams);
|
|
13
|
-
|
|
14
|
-
// insufficient input
|
|
15
|
-
if (!qParams.site) {
|
|
16
|
-
return { status: 422, data: { error: "Insufficient input" } };
|
|
17
|
-
}
|
|
18
|
-
log("getRequests", "SufficientInput", true, logId);
|
|
19
|
-
|
|
20
|
-
// no access to site
|
|
21
|
-
const valid = await validateSiteAccess(event, qParams.site);
|
|
22
|
-
log("getRequests", "valid", valid, logId);
|
|
23
|
-
if (!valid) {
|
|
24
|
-
return { status: 403, data: { error: "Not authorised" } };
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// check auth level to determine whether to fetch all requests or only matching requests
|
|
28
|
-
const authorised = await validateMasterAuth(
|
|
29
|
-
event,
|
|
30
|
-
"maintenanceTracking",
|
|
31
|
-
qParams.site
|
|
32
|
-
);
|
|
33
|
-
log("getRequests", "authorised", authorised, logId);
|
|
34
|
-
const userId = authorised
|
|
35
|
-
? null
|
|
36
|
-
: await getSessionUser(event.headers.authkey);
|
|
37
|
-
|
|
38
|
-
log("getRequests", "userId", userId, logId);
|
|
39
|
-
|
|
40
|
-
const query = userId
|
|
41
|
-
? {
|
|
42
|
-
IndexName: "MaintenanceSiteUserIdIndex",
|
|
43
|
-
KeyConditionExpression: "site = :site AND userID = :userId",
|
|
44
|
-
ExpressionAttributeValues: {
|
|
45
|
-
":site": qParams.site,
|
|
46
|
-
":userId": userId,
|
|
47
|
-
},
|
|
48
|
-
}
|
|
49
|
-
: {
|
|
50
|
-
IndexName: "MaintenanceSiteIndex",
|
|
51
|
-
KeyConditionExpression: "site = :site",
|
|
52
|
-
ExpressionAttributeValues: {
|
|
53
|
-
":site": qParams.site,
|
|
54
|
-
},
|
|
55
|
-
};
|
|
56
|
-
log("getRequests", "query", query, logId);
|
|
57
|
-
|
|
58
|
-
// check whether pagination is applied
|
|
59
|
-
if (qParams.lastKey) {
|
|
60
|
-
try {
|
|
61
|
-
query.ExclusiveStartKey = JSON.parse(qParams.lastKey);
|
|
62
|
-
} catch (e) {}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// get jobs
|
|
66
|
-
const result = await indexQuery("maintenance", query);
|
|
67
|
-
let jobs = result.Items;
|
|
68
|
-
|
|
69
|
-
log("getRequests", "LastEvaluatedKey", result.LastEvaluatedKey, logId);
|
|
70
|
-
log("getRequests", "JobsLength", jobs.length, logId);
|
|
71
|
-
|
|
72
|
-
// filter on status
|
|
73
|
-
if (qParams.status) {
|
|
74
|
-
jobs = jobs.filter((j) => qParams.status.includes(j.status));
|
|
75
|
-
log("getRequests", "FilteredOnStatus", jobs.length, logId);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// filter on type
|
|
79
|
-
if (qParams.type) {
|
|
80
|
-
jobs = jobs.filter((j) => qParams.type.includes(j.type));
|
|
81
|
-
log("getRequests", "FilteredOnType", jobs.length, logId);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// compile results
|
|
85
|
-
const results = { Items: jobs, LastKey: result.LastEvaluatedKey };
|
|
86
|
-
log("getRequests", "Done", true, logId);
|
|
87
|
-
return { status: 200, data: results };
|
|
88
|
-
};
|
|
5
|
+
const getAssignees = require("./requests/getAssignees");
|
|
6
|
+
const getRequests = require("./requests/getRequests");
|
|
89
7
|
|
|
90
8
|
module.exports.getData = async (event, context, callback) => {
|
|
91
9
|
init(config);
|
|
@@ -98,17 +16,26 @@ module.exports.getData = async (event, context, callback) => {
|
|
|
98
16
|
switch (action) {
|
|
99
17
|
case "requests":
|
|
100
18
|
response = await getRequests(event);
|
|
101
|
-
|
|
19
|
+
if (response.status === 200) {
|
|
20
|
+
log(action, "ResponseLength", response.data.Items.length, logId);
|
|
21
|
+
}
|
|
22
|
+
break;
|
|
23
|
+
case "assignees":
|
|
24
|
+
response = await getAssignees(event);
|
|
25
|
+
if (response.status === 200) {
|
|
26
|
+
log(action, "ResponseLength", response.data.Users.length, logId);
|
|
27
|
+
}
|
|
102
28
|
break;
|
|
103
29
|
default:
|
|
104
30
|
break;
|
|
105
31
|
}
|
|
106
32
|
} catch (err) {
|
|
107
|
-
log(action, "InternalError", err, logId);
|
|
33
|
+
log(action, "InternalError", err.toString(), logId);
|
|
108
34
|
if (!response) {
|
|
109
35
|
response = { status: 500, data: { error: "Internal Error" } };
|
|
110
36
|
}
|
|
111
37
|
}
|
|
38
|
+
log(action, "ResponseStatus", response.status, logId);
|
|
112
39
|
|
|
113
40
|
return callback(null, generateJsonResponse(response.status, response.data));
|
|
114
41
|
};
|
package/getJob.js
CHANGED
|
@@ -6,6 +6,7 @@ const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
|
6
6
|
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
7
7
|
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
8
8
|
const getSessionUser = require("@plusscommunities/pluss-core-aws/helper/auth/getSessionUser");
|
|
9
|
+
const isValidAssignee = require("./requests/helper/isValidAssignee");
|
|
9
10
|
|
|
10
11
|
module.exports.getJob = async (event, context, callback) => {
|
|
11
12
|
init(config);
|
|
@@ -43,22 +44,27 @@ module.exports.getJob = async (event, context, callback) => {
|
|
|
43
44
|
"maintenanceTracking",
|
|
44
45
|
result.site
|
|
45
46
|
);
|
|
46
|
-
|
|
47
|
+
const assignAuthorised = await isValidAssignee(
|
|
48
|
+
event,
|
|
49
|
+
result.site,
|
|
50
|
+
result.AssigneeId
|
|
51
|
+
);
|
|
52
|
+
if (!authorised && !assignAuthorised) {
|
|
47
53
|
// Check if the job belongs to the user
|
|
48
54
|
const userId = await getSessionUser(event.headers.authkey);
|
|
49
55
|
if (userId !== result.userID) {
|
|
50
56
|
console.error("Authorization not valid");
|
|
51
57
|
return callback(
|
|
52
58
|
null,
|
|
53
|
-
generateJsonResponse(
|
|
54
|
-
error: { message: "not
|
|
59
|
+
generateJsonResponse(403, {
|
|
60
|
+
error: { message: "not authorised." },
|
|
55
61
|
})
|
|
56
62
|
);
|
|
57
63
|
}
|
|
58
64
|
}
|
|
59
65
|
return callback(null, generateJsonResponse(200, result));
|
|
60
66
|
} catch (error) {
|
|
61
|
-
callback(null, generateJsonResponse(422, { fail: true
|
|
67
|
+
callback(null, generateJsonResponse(422, { fail: true }));
|
|
62
68
|
}
|
|
63
69
|
} catch (error1) {
|
|
64
70
|
return callback(
|