shuttlepro-shared 1.0.0 → 1.1.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/constants/index.js +25 -0
- package/functions.js +5 -0
- package/index.js +4 -8
- package/middlewares/checkPermission/index.js +57 -0
- package/models.js +11 -0
- package/package.json +3 -2
- package/utils/index.js +23 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
exports.HttpStatusCode = {
|
|
2
|
+
OK: 200,
|
|
3
|
+
CREATE: 201,
|
|
4
|
+
CREATED: 200,
|
|
5
|
+
ACCEPTED: 202,
|
|
6
|
+
NOT_SUCCESSFULL: 220,
|
|
7
|
+
NOT_FOUND: 404,
|
|
8
|
+
UNAUTHORIZED: 401,
|
|
9
|
+
BAD_REQUEST: 400,
|
|
10
|
+
FORBIDDEN: 403,
|
|
11
|
+
UNPROCESSABLE_ENTITY: 422,
|
|
12
|
+
INTERNAL_SERVER_ERROR: 500,
|
|
13
|
+
DUPLICATE: 409,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
exports.GenericMessages = {
|
|
17
|
+
INTERNAL_SERVER_ERROR: "Internal server error!",
|
|
18
|
+
TOKEN_NOT_FOUND: "Token doesn't exist!",
|
|
19
|
+
INVALID_TOKEN: "Invalid Token!",
|
|
20
|
+
PERMISSION_DENIED: "Permission Denied!",
|
|
21
|
+
SERVER_ERROR: "Internal server error!",
|
|
22
|
+
DATE_SAVED: "Data saved Successfully!",
|
|
23
|
+
URL_FETCH_SUCCESS: "Url Fetched successfully!",
|
|
24
|
+
WORKSPACE_NOT_FOUND: "Workspace not found!",
|
|
25
|
+
};
|
package/functions.js
ADDED
package/index.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const ColumnPreference = require("./models/ColumnPreference");
|
|
4
|
-
const UserPermission = require("./models/UserPermission");
|
|
1
|
+
const sharedModels = require("./models");
|
|
2
|
+
const sharedFunctions = require("./functions");
|
|
5
3
|
|
|
6
4
|
module.exports = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
ColumnPreference,
|
|
10
|
-
UserPermission,
|
|
5
|
+
sharedModels,
|
|
6
|
+
sharedFunctions,
|
|
11
7
|
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
const { HttpStatusCode, GenericMessages } = require("../../constants");
|
|
2
|
+
const { getBodyFromDecodeToken, getModule } = require("../../utils");
|
|
3
|
+
|
|
4
|
+
exports.checkPermission = async (req, res, next, values) => {
|
|
5
|
+
try {
|
|
6
|
+
const token =
|
|
7
|
+
request.headers && request.headers.authorization
|
|
8
|
+
? request.headers.authorization
|
|
9
|
+
: null;
|
|
10
|
+
if (token) {
|
|
11
|
+
const workspaceId =
|
|
12
|
+
req.query?.workspaceId ||
|
|
13
|
+
req.params?.workspaceId ||
|
|
14
|
+
req.body?.workspaceId ||
|
|
15
|
+
"";
|
|
16
|
+
if (!workspaceId) {
|
|
17
|
+
return res.status(HttpStatusCode.UNAUTHORIZED).json({
|
|
18
|
+
code: HttpStatusCode.UNAUTHORIZED,
|
|
19
|
+
message: GenericMessages.WORKSPACE_NOT_FOUND,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
const body = getBodyFromDecodeToken(token);
|
|
23
|
+
if (body) {
|
|
24
|
+
const { module, action } = values;
|
|
25
|
+
const moduleObj = getModule(body, module);
|
|
26
|
+
if (moduleObj) {
|
|
27
|
+
if (moduleObj.includes(action)) {
|
|
28
|
+
return next();
|
|
29
|
+
} else {
|
|
30
|
+
return res.status(HttpStatusCode.UNAUTHORIZED).json({
|
|
31
|
+
code: HttpStatusCode.UNAUTHORIZED,
|
|
32
|
+
message: GenericMessages.PERMISSION_DENIED,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
} else {
|
|
36
|
+
return res.status(HttpStatusCode.UNAUTHORIZED).json({
|
|
37
|
+
code: HttpStatusCode.UNAUTHORIZED,
|
|
38
|
+
message: GenericMessages.PERMISSION_DENIED,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return res.status(HttpStatusCode.UNAUTHORIZED).json({
|
|
43
|
+
code: HttpStatusCode.UNAUTHORIZED,
|
|
44
|
+
message: GenericMessages.PERMISSION_DENIED,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return res.status(HttpStatusCode.UNAUTHORIZED).json({
|
|
48
|
+
code: HttpStatusCode.UNAUTHORIZED,
|
|
49
|
+
message: GenericMessages.PERMISSION_DENIED,
|
|
50
|
+
});
|
|
51
|
+
} catch (err) {
|
|
52
|
+
return res.status(HttpStatusCode.UNAUTHORIZED).json({
|
|
53
|
+
code: HttpStatusCode.UNAUTHORIZED,
|
|
54
|
+
message: GenericMessages.INTERNAL_SERVER_ERROR,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
};
|
package/models.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const Website = require("./models/Website");
|
|
2
|
+
const ProductQueue = require("./models/ProductQueue");
|
|
3
|
+
const ColumnPreference = require("./models/ColumnPreference");
|
|
4
|
+
const UserPermission = require("./models/UserPermission");
|
|
5
|
+
|
|
6
|
+
module.exports = {
|
|
7
|
+
Website,
|
|
8
|
+
ProductQueue,
|
|
9
|
+
ColumnPreference,
|
|
10
|
+
UserPermission,
|
|
11
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shuttlepro-shared",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"license": "ISC",
|
|
12
12
|
"access": "restricted",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"mongoose": "^5.11.18"
|
|
14
|
+
"mongoose": "^5.11.18",
|
|
15
|
+
"jsonwebtoken": "^9.0.2"
|
|
15
16
|
}
|
|
16
17
|
}
|
package/utils/index.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const jwt = require("jsonwebtoken");
|
|
2
|
+
|
|
3
|
+
exports.getBodyFromDecodeToken = (token) => {
|
|
4
|
+
try {
|
|
5
|
+
const decoded = jwt.decode(token, { complete: true });
|
|
6
|
+
if (decoded && decoded.payload) {
|
|
7
|
+
return decoded.payload || null;
|
|
8
|
+
}
|
|
9
|
+
return null;
|
|
10
|
+
} catch (err) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
exports.getModule = (obj, module) => {
|
|
16
|
+
return (
|
|
17
|
+
(obj &&
|
|
18
|
+
obj.permissions &&
|
|
19
|
+
obj.permissions.length > 0 &&
|
|
20
|
+
obj?.permissions[module]) ||
|
|
21
|
+
null
|
|
22
|
+
);
|
|
23
|
+
};
|