@plusscommunities/pluss-maintenance-aws 2.1.1 → 2.1.3-auth.0
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/getData.js +8 -0
- package/getJob.js +3 -67
- package/integration/archibus/ArchibusStrategy.js +1 -1
- package/package-lock.json +219 -50
- package/package.json +5 -2
- package/requests/getRequest.js +84 -0
- package/scheduleJobImport.js +2 -1
package/getData.js
CHANGED
|
@@ -4,6 +4,7 @@ const { log } = require("@plusscommunities/pluss-core-aws/helper");
|
|
|
4
4
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
5
5
|
const getAssignees = require("./requests/getAssignees");
|
|
6
6
|
const getRequests = require("./requests/getRequests");
|
|
7
|
+
const getRequest = require("./requests/getRequest");
|
|
7
8
|
|
|
8
9
|
module.exports.getData = async (event, context, callback) => {
|
|
9
10
|
init(config);
|
|
@@ -20,6 +21,13 @@ module.exports.getData = async (event, context, callback) => {
|
|
|
20
21
|
log(action, "ResponseLength", response.data.Items.length, logId);
|
|
21
22
|
}
|
|
22
23
|
break;
|
|
24
|
+
|
|
25
|
+
case "request":
|
|
26
|
+
response = await getRequest(event);
|
|
27
|
+
if (response.status === 200) {
|
|
28
|
+
log(action, "ResponseLength", response.data, logId);
|
|
29
|
+
}
|
|
30
|
+
break;
|
|
23
31
|
case "assignees":
|
|
24
32
|
response = await getAssignees(event);
|
|
25
33
|
if (response.status === 200) {
|
package/getJob.js
CHANGED
|
@@ -2,77 +2,13 @@ const config = require("./config.json");
|
|
|
2
2
|
const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
3
3
|
const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
4
4
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
5
|
-
const
|
|
6
|
-
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
7
|
-
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
8
|
-
const getSessionUser = require("@plusscommunities/pluss-core-aws/helper/auth/getSessionUser");
|
|
9
|
-
const isValidAssignee = require("./requests/helper/isValidAssignee");
|
|
5
|
+
const getRequest = require("./requests/getRequest");
|
|
10
6
|
|
|
11
7
|
module.exports.getJob = async (event, context, callback) => {
|
|
12
8
|
init(config);
|
|
13
9
|
const data = getBody(event);
|
|
14
10
|
|
|
15
|
-
|
|
16
|
-
return callback(
|
|
17
|
-
null,
|
|
18
|
-
generateJsonResponse(422, {
|
|
19
|
-
error: { message: "User Types fetch -- no site or type id detected." },
|
|
20
|
-
})
|
|
21
|
-
);
|
|
22
|
-
}
|
|
11
|
+
const result = await getRequest(event, data);
|
|
23
12
|
|
|
24
|
-
|
|
25
|
-
let result = null;
|
|
26
|
-
if (data.jobId) {
|
|
27
|
-
const query = {
|
|
28
|
-
IndexName: "MaintenanceSiteJobIdIndex",
|
|
29
|
-
KeyConditionExpression: "site = :site and jobId = :jobId",
|
|
30
|
-
ExpressionAttributeValues: {
|
|
31
|
-
":site": data.site,
|
|
32
|
-
":jobId": data.jobId,
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
const { Items } = await indexQuery("maintenance", query);
|
|
36
|
-
result = Items[0];
|
|
37
|
-
}
|
|
38
|
-
if (!result)
|
|
39
|
-
result = await getRef("maintenance", "id", data.id || data.jobId);
|
|
40
|
-
|
|
41
|
-
try {
|
|
42
|
-
const authorised = await validateMasterAuth(
|
|
43
|
-
event,
|
|
44
|
-
"maintenanceTracking",
|
|
45
|
-
result.site
|
|
46
|
-
);
|
|
47
|
-
const assignAuthorised = await isValidAssignee(
|
|
48
|
-
event,
|
|
49
|
-
result.site,
|
|
50
|
-
result.AssigneeId
|
|
51
|
-
);
|
|
52
|
-
if (!authorised && !assignAuthorised) {
|
|
53
|
-
// Check if the job belongs to the user
|
|
54
|
-
const userId = await getSessionUser(event.headers.authkey);
|
|
55
|
-
if (userId !== result.userID) {
|
|
56
|
-
console.error("Authorization not valid");
|
|
57
|
-
return callback(
|
|
58
|
-
null,
|
|
59
|
-
generateJsonResponse(403, {
|
|
60
|
-
error: { message: "not authorised." },
|
|
61
|
-
})
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return callback(null, generateJsonResponse(200, result));
|
|
66
|
-
} catch (error) {
|
|
67
|
-
callback(null, generateJsonResponse(422, { fail: true }));
|
|
68
|
-
}
|
|
69
|
-
} catch (error1) {
|
|
70
|
-
return callback(
|
|
71
|
-
null,
|
|
72
|
-
generateJsonResponse(200, {
|
|
73
|
-
userFetchFail: true,
|
|
74
|
-
message: "Fail on user query. Please try again.",
|
|
75
|
-
})
|
|
76
|
-
);
|
|
77
|
-
}
|
|
13
|
+
return callback(null, generateJsonResponse(result.status, result.data));
|
|
78
14
|
};
|
|
@@ -70,7 +70,7 @@ class ArchibusStrategy extends IntegrationStrategy {
|
|
|
70
70
|
},
|
|
71
71
|
data: {
|
|
72
72
|
prob_type: "1.ON-SITE|1. MAINTENANCE",
|
|
73
|
-
requestor: "
|
|
73
|
+
requestor: "PLUSS",
|
|
74
74
|
description: `${request.title}${
|
|
75
75
|
_.isEmpty(request.description) ? "" : `\n\n${request.description}`
|
|
76
76
|
}${_.isEmpty(request.room) ? "" : `\n\nLocation: ${request.room}`}${
|
package/package-lock.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plusscommunities/pluss-maintenance-aws",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.3-auth.0",
|
|
4
4
|
"lockfileVersion": 1,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"dependencies": {
|
|
@@ -94,11 +94,26 @@
|
|
|
94
94
|
"semver": "^6.3.1"
|
|
95
95
|
},
|
|
96
96
|
"dependencies": {
|
|
97
|
+
"lru-cache": {
|
|
98
|
+
"version": "5.1.1",
|
|
99
|
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
|
100
|
+
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
|
101
|
+
"dev": true,
|
|
102
|
+
"requires": {
|
|
103
|
+
"yallist": "^3.0.2"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
97
106
|
"semver": {
|
|
98
107
|
"version": "6.3.1",
|
|
99
108
|
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
|
100
109
|
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
|
101
110
|
"dev": true
|
|
111
|
+
},
|
|
112
|
+
"yallist": {
|
|
113
|
+
"version": "3.1.1",
|
|
114
|
+
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
|
115
|
+
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
|
116
|
+
"dev": true
|
|
102
117
|
}
|
|
103
118
|
}
|
|
104
119
|
},
|
|
@@ -1468,9 +1483,9 @@
|
|
|
1468
1483
|
}
|
|
1469
1484
|
},
|
|
1470
1485
|
"@plusscommunities/pluss-core-aws": {
|
|
1471
|
-
"version": "2.0.
|
|
1472
|
-
"resolved": "https://registry.npmjs.org/@plusscommunities/pluss-core-aws/-/pluss-core-aws-2.0.
|
|
1473
|
-
"integrity": "sha512-
|
|
1486
|
+
"version": "2.0.7-auth.0",
|
|
1487
|
+
"resolved": "https://registry.npmjs.org/@plusscommunities/pluss-core-aws/-/pluss-core-aws-2.0.7-auth.0.tgz",
|
|
1488
|
+
"integrity": "sha512-nd55pKiY+v0c4IeuIRJ1uo5GLQ6b5xhGYRbvgYi8eK2ScnxSzYFxhfDGsmQMiQAZ2kSs0inPnCZAPy7i0hCOUw==",
|
|
1474
1489
|
"requires": {
|
|
1475
1490
|
"@aws/dynamodb-auto-marshaller": "^0.7.1",
|
|
1476
1491
|
"amazon-cognito-identity-js": "^2.0.19",
|
|
@@ -1479,6 +1494,8 @@
|
|
|
1479
1494
|
"expo-server-sdk": "^3.0.1",
|
|
1480
1495
|
"html-entities": "^2.3.2",
|
|
1481
1496
|
"https": "^1.0.0",
|
|
1497
|
+
"jsonwebtoken": "^9.0.2",
|
|
1498
|
+
"jwks-rsa": "^3.1.0",
|
|
1482
1499
|
"lodash": "^4.17.10",
|
|
1483
1500
|
"moment": "^2.30.1",
|
|
1484
1501
|
"node-fetch": "^2.2.0",
|
|
@@ -1486,6 +1503,35 @@
|
|
|
1486
1503
|
"nodemailer": "^6.9.12",
|
|
1487
1504
|
"twilio": "^3.18.0",
|
|
1488
1505
|
"uuid": "^2.0.3"
|
|
1506
|
+
},
|
|
1507
|
+
"dependencies": {
|
|
1508
|
+
"jsonwebtoken": {
|
|
1509
|
+
"version": "9.0.2",
|
|
1510
|
+
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
|
|
1511
|
+
"integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==",
|
|
1512
|
+
"requires": {
|
|
1513
|
+
"jws": "^3.2.2",
|
|
1514
|
+
"lodash.includes": "^4.3.0",
|
|
1515
|
+
"lodash.isboolean": "^3.0.3",
|
|
1516
|
+
"lodash.isinteger": "^4.0.4",
|
|
1517
|
+
"lodash.isnumber": "^3.0.3",
|
|
1518
|
+
"lodash.isplainobject": "^4.0.6",
|
|
1519
|
+
"lodash.isstring": "^4.0.1",
|
|
1520
|
+
"lodash.once": "^4.0.0",
|
|
1521
|
+
"ms": "^2.1.1",
|
|
1522
|
+
"semver": "^7.5.4"
|
|
1523
|
+
}
|
|
1524
|
+
},
|
|
1525
|
+
"ms": {
|
|
1526
|
+
"version": "2.1.3",
|
|
1527
|
+
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
|
1528
|
+
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
|
1529
|
+
},
|
|
1530
|
+
"semver": {
|
|
1531
|
+
"version": "7.6.3",
|
|
1532
|
+
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
|
|
1533
|
+
"integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="
|
|
1534
|
+
}
|
|
1489
1535
|
}
|
|
1490
1536
|
},
|
|
1491
1537
|
"@sinclair/typebox": {
|
|
@@ -1553,6 +1599,45 @@
|
|
|
1553
1599
|
"@babel/types": "^7.20.7"
|
|
1554
1600
|
}
|
|
1555
1601
|
},
|
|
1602
|
+
"@types/body-parser": {
|
|
1603
|
+
"version": "1.19.5",
|
|
1604
|
+
"resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz",
|
|
1605
|
+
"integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==",
|
|
1606
|
+
"requires": {
|
|
1607
|
+
"@types/connect": "*",
|
|
1608
|
+
"@types/node": "*"
|
|
1609
|
+
}
|
|
1610
|
+
},
|
|
1611
|
+
"@types/connect": {
|
|
1612
|
+
"version": "3.4.38",
|
|
1613
|
+
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
|
|
1614
|
+
"integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
|
|
1615
|
+
"requires": {
|
|
1616
|
+
"@types/node": "*"
|
|
1617
|
+
}
|
|
1618
|
+
},
|
|
1619
|
+
"@types/express": {
|
|
1620
|
+
"version": "4.17.21",
|
|
1621
|
+
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
|
|
1622
|
+
"integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
|
|
1623
|
+
"requires": {
|
|
1624
|
+
"@types/body-parser": "*",
|
|
1625
|
+
"@types/express-serve-static-core": "^4.17.33",
|
|
1626
|
+
"@types/qs": "*",
|
|
1627
|
+
"@types/serve-static": "*"
|
|
1628
|
+
}
|
|
1629
|
+
},
|
|
1630
|
+
"@types/express-serve-static-core": {
|
|
1631
|
+
"version": "4.19.5",
|
|
1632
|
+
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz",
|
|
1633
|
+
"integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==",
|
|
1634
|
+
"requires": {
|
|
1635
|
+
"@types/node": "*",
|
|
1636
|
+
"@types/qs": "*",
|
|
1637
|
+
"@types/range-parser": "*",
|
|
1638
|
+
"@types/send": "*"
|
|
1639
|
+
}
|
|
1640
|
+
},
|
|
1556
1641
|
"@types/graceful-fs": {
|
|
1557
1642
|
"version": "4.1.9",
|
|
1558
1643
|
"resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz",
|
|
@@ -1562,6 +1647,11 @@
|
|
|
1562
1647
|
"@types/node": "*"
|
|
1563
1648
|
}
|
|
1564
1649
|
},
|
|
1650
|
+
"@types/http-errors": {
|
|
1651
|
+
"version": "2.0.4",
|
|
1652
|
+
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz",
|
|
1653
|
+
"integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA=="
|
|
1654
|
+
},
|
|
1565
1655
|
"@types/istanbul-lib-coverage": {
|
|
1566
1656
|
"version": "2.0.6",
|
|
1567
1657
|
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
|
|
@@ -1596,13 +1686,61 @@
|
|
|
1596
1686
|
"pretty-format": "^26.0.0"
|
|
1597
1687
|
}
|
|
1598
1688
|
},
|
|
1689
|
+
"@types/jsonwebtoken": {
|
|
1690
|
+
"version": "9.0.7",
|
|
1691
|
+
"resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz",
|
|
1692
|
+
"integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==",
|
|
1693
|
+
"requires": {
|
|
1694
|
+
"@types/node": "*"
|
|
1695
|
+
}
|
|
1696
|
+
},
|
|
1697
|
+
"@types/mime": {
|
|
1698
|
+
"version": "1.3.5",
|
|
1699
|
+
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
|
|
1700
|
+
"integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="
|
|
1701
|
+
},
|
|
1599
1702
|
"@types/node": {
|
|
1600
1703
|
"version": "22.2.0",
|
|
1601
1704
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz",
|
|
1602
1705
|
"integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==",
|
|
1603
|
-
"dev": true,
|
|
1604
1706
|
"requires": {
|
|
1605
1707
|
"undici-types": "~6.13.0"
|
|
1708
|
+
},
|
|
1709
|
+
"dependencies": {
|
|
1710
|
+
"undici-types": {
|
|
1711
|
+
"version": "6.13.0",
|
|
1712
|
+
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz",
|
|
1713
|
+
"integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg=="
|
|
1714
|
+
}
|
|
1715
|
+
}
|
|
1716
|
+
},
|
|
1717
|
+
"@types/qs": {
|
|
1718
|
+
"version": "6.9.16",
|
|
1719
|
+
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz",
|
|
1720
|
+
"integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A=="
|
|
1721
|
+
},
|
|
1722
|
+
"@types/range-parser": {
|
|
1723
|
+
"version": "1.2.7",
|
|
1724
|
+
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
|
|
1725
|
+
"integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="
|
|
1726
|
+
},
|
|
1727
|
+
"@types/send": {
|
|
1728
|
+
"version": "0.17.4",
|
|
1729
|
+
"resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz",
|
|
1730
|
+
"integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==",
|
|
1731
|
+
"requires": {
|
|
1732
|
+
"@types/mime": "^1",
|
|
1733
|
+
"@types/node": "*"
|
|
1734
|
+
}
|
|
1735
|
+
},
|
|
1736
|
+
"@types/serve-static": {
|
|
1737
|
+
"version": "1.15.7",
|
|
1738
|
+
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz",
|
|
1739
|
+
"integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==",
|
|
1740
|
+
"requires": {
|
|
1741
|
+
"@types/http-errors": "*",
|
|
1742
|
+
"@types/node": "*",
|
|
1743
|
+
"@types/send": "*"
|
|
1606
1744
|
}
|
|
1607
1745
|
},
|
|
1608
1746
|
"@types/stack-utils": {
|
|
@@ -1754,9 +1892,9 @@
|
|
|
1754
1892
|
}
|
|
1755
1893
|
},
|
|
1756
1894
|
"aws-sdk": {
|
|
1757
|
-
"version": "2.
|
|
1758
|
-
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.
|
|
1759
|
-
"integrity": "sha512-
|
|
1895
|
+
"version": "2.1591.0",
|
|
1896
|
+
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1591.0.tgz",
|
|
1897
|
+
"integrity": "sha512-9HbejaKZM89OK4YpE5TpjJItAtU1xhsFvy2p9qZN7nEpfx3G0FpepaW2fdpHu51gFeUn1+g0XUwekyq2N/Xagw==",
|
|
1760
1898
|
"requires": {
|
|
1761
1899
|
"buffer": "4.9.2",
|
|
1762
1900
|
"events": "1.1.1",
|
|
@@ -1793,13 +1931,25 @@
|
|
|
1793
1931
|
}
|
|
1794
1932
|
},
|
|
1795
1933
|
"axios": {
|
|
1796
|
-
"version": "1.
|
|
1797
|
-
"resolved": "https://registry.npmjs.org/axios/-/axios-1.
|
|
1798
|
-
"integrity": "sha512-
|
|
1934
|
+
"version": "1.6.8",
|
|
1935
|
+
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",
|
|
1936
|
+
"integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
|
|
1799
1937
|
"requires": {
|
|
1800
1938
|
"follow-redirects": "^1.15.6",
|
|
1801
1939
|
"form-data": "^4.0.0",
|
|
1802
1940
|
"proxy-from-env": "^1.1.0"
|
|
1941
|
+
},
|
|
1942
|
+
"dependencies": {
|
|
1943
|
+
"form-data": {
|
|
1944
|
+
"version": "4.0.0",
|
|
1945
|
+
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
|
1946
|
+
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
|
1947
|
+
"requires": {
|
|
1948
|
+
"asynckit": "^0.4.0",
|
|
1949
|
+
"combined-stream": "^1.0.8",
|
|
1950
|
+
"mime-types": "^2.1.12"
|
|
1951
|
+
}
|
|
1952
|
+
}
|
|
1803
1953
|
}
|
|
1804
1954
|
},
|
|
1805
1955
|
"babel-code-frame": {
|
|
@@ -2525,7 +2675,6 @@
|
|
|
2525
2675
|
"version": "4.3.6",
|
|
2526
2676
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
|
|
2527
2677
|
"integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
|
|
2528
|
-
"dev": true,
|
|
2529
2678
|
"requires": {
|
|
2530
2679
|
"ms": "2.1.2"
|
|
2531
2680
|
},
|
|
@@ -2533,8 +2682,7 @@
|
|
|
2533
2682
|
"ms": {
|
|
2534
2683
|
"version": "2.1.2",
|
|
2535
2684
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
|
2536
|
-
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
|
2537
|
-
"dev": true
|
|
2685
|
+
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
|
2538
2686
|
}
|
|
2539
2687
|
}
|
|
2540
2688
|
},
|
|
@@ -3250,16 +3398,6 @@
|
|
|
3250
3398
|
"is-callable": "^1.1.3"
|
|
3251
3399
|
}
|
|
3252
3400
|
},
|
|
3253
|
-
"form-data": {
|
|
3254
|
-
"version": "4.0.0",
|
|
3255
|
-
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
|
|
3256
|
-
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
|
|
3257
|
-
"requires": {
|
|
3258
|
-
"asynckit": "^0.4.0",
|
|
3259
|
-
"combined-stream": "^1.0.8",
|
|
3260
|
-
"mime-types": "^2.1.12"
|
|
3261
|
-
}
|
|
3262
|
-
},
|
|
3263
3401
|
"fs.realpath": {
|
|
3264
3402
|
"version": "1.0.0",
|
|
3265
3403
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
|
@@ -5886,6 +6024,11 @@
|
|
|
5886
6024
|
"resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz",
|
|
5887
6025
|
"integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw=="
|
|
5888
6026
|
},
|
|
6027
|
+
"jose": {
|
|
6028
|
+
"version": "4.15.9",
|
|
6029
|
+
"resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz",
|
|
6030
|
+
"integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA=="
|
|
6031
|
+
},
|
|
5889
6032
|
"js-cookie": {
|
|
5890
6033
|
"version": "2.2.1",
|
|
5891
6034
|
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz",
|
|
@@ -5986,6 +6129,19 @@
|
|
|
5986
6129
|
"safe-buffer": "^5.0.1"
|
|
5987
6130
|
}
|
|
5988
6131
|
},
|
|
6132
|
+
"jwks-rsa": {
|
|
6133
|
+
"version": "3.1.0",
|
|
6134
|
+
"resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.1.0.tgz",
|
|
6135
|
+
"integrity": "sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==",
|
|
6136
|
+
"requires": {
|
|
6137
|
+
"@types/express": "^4.17.17",
|
|
6138
|
+
"@types/jsonwebtoken": "^9.0.2",
|
|
6139
|
+
"debug": "^4.3.4",
|
|
6140
|
+
"jose": "^4.14.6",
|
|
6141
|
+
"limiter": "^1.1.5",
|
|
6142
|
+
"lru-memoizer": "^2.2.0"
|
|
6143
|
+
}
|
|
6144
|
+
},
|
|
5989
6145
|
"jws": {
|
|
5990
6146
|
"version": "3.2.2",
|
|
5991
6147
|
"resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
|
|
@@ -6017,6 +6173,11 @@
|
|
|
6017
6173
|
"type-check": "~0.3.2"
|
|
6018
6174
|
}
|
|
6019
6175
|
},
|
|
6176
|
+
"limiter": {
|
|
6177
|
+
"version": "1.1.5",
|
|
6178
|
+
"resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz",
|
|
6179
|
+
"integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA=="
|
|
6180
|
+
},
|
|
6020
6181
|
"lines-and-columns": {
|
|
6021
6182
|
"version": "1.2.4",
|
|
6022
6183
|
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
|
|
@@ -6043,6 +6204,11 @@
|
|
|
6043
6204
|
"integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
|
|
6044
6205
|
"dev": true
|
|
6045
6206
|
},
|
|
6207
|
+
"lodash.clonedeep": {
|
|
6208
|
+
"version": "4.5.0",
|
|
6209
|
+
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
|
|
6210
|
+
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
|
|
6211
|
+
},
|
|
6046
6212
|
"lodash.cond": {
|
|
6047
6213
|
"version": "4.5.2",
|
|
6048
6214
|
"resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz",
|
|
@@ -6129,12 +6295,20 @@
|
|
|
6129
6295
|
}
|
|
6130
6296
|
},
|
|
6131
6297
|
"lru-cache": {
|
|
6132
|
-
"version": "
|
|
6133
|
-
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-
|
|
6134
|
-
"integrity": "sha512-
|
|
6135
|
-
"
|
|
6298
|
+
"version": "6.0.0",
|
|
6299
|
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
|
6300
|
+
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
|
6301
|
+
"requires": {
|
|
6302
|
+
"yallist": "^4.0.0"
|
|
6303
|
+
}
|
|
6304
|
+
},
|
|
6305
|
+
"lru-memoizer": {
|
|
6306
|
+
"version": "2.3.0",
|
|
6307
|
+
"resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.3.0.tgz",
|
|
6308
|
+
"integrity": "sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==",
|
|
6136
6309
|
"requires": {
|
|
6137
|
-
"
|
|
6310
|
+
"lodash.clonedeep": "^4.5.0",
|
|
6311
|
+
"lru-cache": "6.0.0"
|
|
6138
6312
|
}
|
|
6139
6313
|
},
|
|
6140
6314
|
"make-dir": {
|
|
@@ -6170,9 +6344,9 @@
|
|
|
6170
6344
|
"dev": true
|
|
6171
6345
|
},
|
|
6172
6346
|
"micromatch": {
|
|
6173
|
-
"version": "4.0.
|
|
6174
|
-
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.
|
|
6175
|
-
"integrity": "sha512-
|
|
6347
|
+
"version": "4.0.8",
|
|
6348
|
+
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
|
|
6349
|
+
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
|
|
6176
6350
|
"dev": true,
|
|
6177
6351
|
"requires": {
|
|
6178
6352
|
"braces": "^3.0.3",
|
|
@@ -6307,9 +6481,9 @@
|
|
|
6307
6481
|
"dev": true
|
|
6308
6482
|
},
|
|
6309
6483
|
"nodemailer": {
|
|
6310
|
-
"version": "6.9.
|
|
6311
|
-
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.
|
|
6312
|
-
"integrity": "sha512-
|
|
6484
|
+
"version": "6.9.13",
|
|
6485
|
+
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.13.tgz",
|
|
6486
|
+
"integrity": "sha512-7o38Yogx6krdoBf3jCAqnIN4oSQFx+fMa0I7dK1D+me9kBxx12D+/33wSb+fhOCtIxvYJ+4x4IMEhmhCKfAiOA=="
|
|
6313
6487
|
},
|
|
6314
6488
|
"normalize-path": {
|
|
6315
6489
|
"version": "3.0.0",
|
|
@@ -6624,11 +6798,6 @@
|
|
|
6624
6798
|
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
|
6625
6799
|
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
|
|
6626
6800
|
},
|
|
6627
|
-
"punycode": {
|
|
6628
|
-
"version": "1.3.2",
|
|
6629
|
-
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
|
|
6630
|
-
"integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw=="
|
|
6631
|
-
},
|
|
6632
6801
|
"pure-rand": {
|
|
6633
6802
|
"version": "6.1.0",
|
|
6634
6803
|
"resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz",
|
|
@@ -7280,12 +7449,6 @@
|
|
|
7280
7449
|
"which-boxed-primitive": "^1.0.2"
|
|
7281
7450
|
}
|
|
7282
7451
|
},
|
|
7283
|
-
"undici-types": {
|
|
7284
|
-
"version": "6.13.0",
|
|
7285
|
-
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz",
|
|
7286
|
-
"integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==",
|
|
7287
|
-
"dev": true
|
|
7288
|
-
},
|
|
7289
7452
|
"update-browserslist-db": {
|
|
7290
7453
|
"version": "1.1.0",
|
|
7291
7454
|
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
|
|
@@ -7303,6 +7466,13 @@
|
|
|
7303
7466
|
"requires": {
|
|
7304
7467
|
"punycode": "1.3.2",
|
|
7305
7468
|
"querystring": "0.2.0"
|
|
7469
|
+
},
|
|
7470
|
+
"dependencies": {
|
|
7471
|
+
"punycode": {
|
|
7472
|
+
"version": "1.3.2",
|
|
7473
|
+
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
|
|
7474
|
+
"integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw=="
|
|
7475
|
+
}
|
|
7306
7476
|
}
|
|
7307
7477
|
},
|
|
7308
7478
|
"url-parse": {
|
|
@@ -7583,10 +7753,9 @@
|
|
|
7583
7753
|
"dev": true
|
|
7584
7754
|
},
|
|
7585
7755
|
"yallist": {
|
|
7586
|
-
"version": "
|
|
7587
|
-
"resolved": "https://registry.npmjs.org/yallist/-/yallist-
|
|
7588
|
-
"integrity": "sha512-
|
|
7589
|
-
"dev": true
|
|
7756
|
+
"version": "4.0.0",
|
|
7757
|
+
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
|
7758
|
+
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
|
7590
7759
|
},
|
|
7591
7760
|
"yargs": {
|
|
7592
7761
|
"version": "17.7.2",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plusscommunities/pluss-maintenance-aws",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.3-auth.0",
|
|
4
4
|
"description": "Extension package to enable maintenance on Pluss Communities Platform",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"gc": "node ../../tools/gc ./",
|
|
@@ -10,6 +10,9 @@
|
|
|
10
10
|
"deploy": "npm run gc && npm run gs && serverless deploy",
|
|
11
11
|
"betaupload": "rm -rf .serverless && npm i && npm publish --access public --tag beta",
|
|
12
12
|
"betaupload:p": "npm run betapatch && npm run betaupload",
|
|
13
|
+
"authpatch": "npm version prepatch --preid=auth",
|
|
14
|
+
"authupload": "npm i && npm i && npm publish --access public --tag auth",
|
|
15
|
+
"authupload:p": "npm run authpatch && npm run authupload",
|
|
13
16
|
"upload": "rm -rf .serverless && npm i && npm publish --access public",
|
|
14
17
|
"upload:p": "npm run patch && npm run upload",
|
|
15
18
|
"test": "jest tests -i"
|
|
@@ -18,7 +21,7 @@
|
|
|
18
21
|
"license": "ISC",
|
|
19
22
|
"dependencies": {
|
|
20
23
|
"@aws/dynamodb-auto-marshaller": "^0.7.1",
|
|
21
|
-
"@plusscommunities/pluss-core-aws": "2.0.
|
|
24
|
+
"@plusscommunities/pluss-core-aws": "2.0.7-auth.0",
|
|
22
25
|
"amazon-cognito-identity-js": "^2.0.19",
|
|
23
26
|
"aws-sdk": "^2.1591.0",
|
|
24
27
|
"axios": "^1.6.8",
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
const { log, getRowId } = require("@plusscommunities/pluss-core-aws/helper");
|
|
2
|
+
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
3
|
+
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
4
|
+
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
5
|
+
const isValidAssignee = require("./helper/isValidAssignee");
|
|
6
|
+
const getSessionUserFromReqAuthKey = require("@plusscommunities/pluss-core-aws/helper/auth/getSessionUserFromReqAuthKey");
|
|
7
|
+
|
|
8
|
+
module.exports = async (event, params) => {
|
|
9
|
+
const data = params || event.queryStringParameters;
|
|
10
|
+
const logId = log("getRequest", "Params", data);
|
|
11
|
+
if (!data.id && (!data.site || !data.jobId)) {
|
|
12
|
+
return {
|
|
13
|
+
status: 422,
|
|
14
|
+
data: {
|
|
15
|
+
error: "Insufficient input",
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
let result = null;
|
|
22
|
+
if (data.jobId) {
|
|
23
|
+
const query = {
|
|
24
|
+
IndexName: "MaintenanceSiteJobIdIndex",
|
|
25
|
+
KeyConditionExpression: "site = :site and jobId = :jobId",
|
|
26
|
+
ExpressionAttributeValues: {
|
|
27
|
+
":site": data.site,
|
|
28
|
+
":jobId": data.jobId,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const { Items } = await indexQuery("maintenance", query);
|
|
32
|
+
result = Items[0];
|
|
33
|
+
}
|
|
34
|
+
if (!result) {
|
|
35
|
+
result = await getRef("maintenance", "id", data.id || data.jobId);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const authorised = await validateMasterAuth(
|
|
39
|
+
event,
|
|
40
|
+
"maintenanceTracking",
|
|
41
|
+
result.site
|
|
42
|
+
);
|
|
43
|
+
const assignAuthorised = await isValidAssignee(
|
|
44
|
+
event,
|
|
45
|
+
result.site,
|
|
46
|
+
result.AssigneeId
|
|
47
|
+
);
|
|
48
|
+
if (!authorised && !assignAuthorised) {
|
|
49
|
+
// Check if the job belongs to the user
|
|
50
|
+
const userId = await getSessionUserFromReqAuthKey(event);
|
|
51
|
+
if (userId !== result.userID) {
|
|
52
|
+
return {
|
|
53
|
+
status: 403,
|
|
54
|
+
data: {
|
|
55
|
+
error: "Not authorised",
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (data.includeComments) {
|
|
61
|
+
const commentsQuery = {
|
|
62
|
+
IndexName: "CommentsEntityIdIndex",
|
|
63
|
+
KeyConditionExpression: "EntityId = :groupId",
|
|
64
|
+
ExpressionAttributeValues: {
|
|
65
|
+
":groupId": getRowId(result.id, "maintenancerequest"),
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
const commentsData = await indexQuery("comments", commentsQuery);
|
|
69
|
+
result.Comments = commentsData.Items;
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
status: 200,
|
|
73
|
+
data: result,
|
|
74
|
+
};
|
|
75
|
+
} catch (error) {
|
|
76
|
+
log("getRequest", "Error", error.toString(), logId);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
status: 500,
|
|
80
|
+
data: {
|
|
81
|
+
error: "Internal error",
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
};
|
package/scheduleJobImport.js
CHANGED
|
@@ -44,7 +44,8 @@ const processBatch = async (strategy, startTime) => {
|
|
|
44
44
|
const promises = [];
|
|
45
45
|
|
|
46
46
|
Items.forEach((item) => {
|
|
47
|
-
|
|
47
|
+
log("processBatch", "ProcessSingle", JSON.stringify(item), logId);
|
|
48
|
+
promises.push(processSingle(strategy, JSON.parse(JSON.stringify(item))));
|
|
48
49
|
});
|
|
49
50
|
|
|
50
51
|
await Promise.all(promises);
|