@modular-rest/server 1.4.2 → 1.4.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/package.json +2 -2
- package/src/helper/presetup_services.js +27 -29
- package/src/index.js +49 -49
- package/src/middlewares.js +28 -22
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modular-rest/server",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.3",
|
|
4
4
|
"description": "a nodejs module based on KOAJS for developing Rest-APIs in a modular solution.",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
"@koa/cors": "^3.1.0",
|
|
27
27
|
"colog": "^1.0.4",
|
|
28
28
|
"file-system": "^2.2.2",
|
|
29
|
-
"generate-rsa-keypair": "^0.2.1",
|
|
30
29
|
"jsonwebtoken": "^8.5.1",
|
|
30
|
+
"keypair": "^1.0.4",
|
|
31
31
|
"koa": "^2.5.3",
|
|
32
32
|
"koa-body": "^4.2.0",
|
|
33
33
|
"koa-router": "^7.4.0",
|
|
@@ -1,34 +1,32 @@
|
|
|
1
|
-
let DataInsertion = require(
|
|
2
|
-
let JWT = require(
|
|
3
|
-
let FileService = require(
|
|
1
|
+
let DataInsertion = require("./data_insertion");
|
|
2
|
+
let JWT = require("../services/jwt/service");
|
|
3
|
+
let FileService = require("../services/file/service");
|
|
4
4
|
|
|
5
5
|
module.exports.setup = async ({ keypair, adminUser, uploadDirectory }) => {
|
|
6
|
+
/**
|
|
7
|
+
* Json web Token
|
|
8
|
+
*
|
|
9
|
+
* Setup private and public keys for JWT module
|
|
10
|
+
*/
|
|
11
|
+
if (!keypair) {
|
|
12
|
+
// generate new keypair
|
|
13
|
+
const generateKeypair = require("keypair");
|
|
14
|
+
keypair = generateKeypair();
|
|
15
|
+
}
|
|
6
16
|
|
|
7
|
-
|
|
8
|
-
* Json web Token
|
|
9
|
-
*
|
|
10
|
-
* Setup private and public keys for JWT module
|
|
11
|
-
*/
|
|
12
|
-
if (!keypair) {
|
|
13
|
-
// generate new keypair
|
|
14
|
-
var generateRSAKeypair = require('generate-rsa-keypair')
|
|
15
|
-
keypair = generateRSAKeypair()
|
|
16
|
-
}
|
|
17
|
+
JWT.main.setKies(keypair.private, keypair.public);
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Data Insertion
|
|
21
|
+
*
|
|
22
|
+
* Insert permissions and admin user
|
|
23
|
+
* for the first time
|
|
24
|
+
*/
|
|
25
|
+
await DataInsertion.createPermissions();
|
|
26
|
+
await DataInsertion.createAdminUser(adminUser);
|
|
19
27
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
*/
|
|
26
|
-
await DataInsertion.createPermissions();
|
|
27
|
-
await DataInsertion.createAdminUser(adminUser)
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* File Service
|
|
31
|
-
*/
|
|
32
|
-
FileService.setUploadDirectory(uploadDirectory);
|
|
33
|
-
|
|
34
|
-
}
|
|
28
|
+
/**
|
|
29
|
+
* File Service
|
|
30
|
+
*/
|
|
31
|
+
FileService.setUploadDirectory(uploadDirectory);
|
|
32
|
+
};
|
package/src/index.js
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
1
|
// Application
|
|
2
|
-
const createRest = require(
|
|
3
|
-
const Schema = require(
|
|
2
|
+
const createRest = require("./application");
|
|
3
|
+
const Schema = require("mongoose").Schema;
|
|
4
4
|
|
|
5
5
|
// Utilities
|
|
6
|
-
const paginator = require(
|
|
7
|
-
const reply = require(
|
|
8
|
-
const validator = require(
|
|
9
|
-
const {
|
|
10
|
-
|
|
11
|
-
} = require('./services/data_provider/service');
|
|
12
|
-
const TypeCasters = require('./services/data_provider/typeCasters');
|
|
6
|
+
const paginator = require("./class/paginator");
|
|
7
|
+
const reply = require("./class/reply");
|
|
8
|
+
const validator = require("./class/validator");
|
|
9
|
+
const { getCollection } = require("./services/data_provider/service");
|
|
10
|
+
const TypeCasters = require("./services/data_provider/typeCasters");
|
|
13
11
|
|
|
14
12
|
// Base class
|
|
15
|
-
const CollectionDefinition = require(
|
|
16
|
-
const Schemas = require(
|
|
17
|
-
const DatabaseTrigger = require(
|
|
18
|
-
const SecurityClass = require(
|
|
13
|
+
const CollectionDefinition = require("./class/collection_definition");
|
|
14
|
+
const Schemas = require("./class/db_schemas");
|
|
15
|
+
const DatabaseTrigger = require("./class/database_trigger");
|
|
16
|
+
const SecurityClass = require("./class/security");
|
|
19
17
|
|
|
20
|
-
const middleware = require(
|
|
18
|
+
const middleware = require("./middlewares");
|
|
21
19
|
|
|
22
20
|
module.exports = {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
21
|
+
createRest,
|
|
22
|
+
|
|
23
|
+
//
|
|
24
|
+
// Utilities
|
|
25
|
+
//
|
|
26
|
+
reply,
|
|
27
|
+
TypeCasters,
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @type {import('./class/paginator').create}
|
|
31
|
+
*/
|
|
32
|
+
paginator,
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @type {import('./class/validator')}
|
|
36
|
+
*/
|
|
37
|
+
validator,
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @type {import('./services/data_provider/service').getCollection}
|
|
41
|
+
* @return {import('mongoose').Model} Mongoose model https://mongoosejs.com/docs/api/model.html
|
|
42
|
+
*/
|
|
43
|
+
getCollection,
|
|
44
|
+
|
|
45
|
+
//
|
|
46
|
+
// Base class
|
|
47
|
+
//
|
|
48
|
+
CollectionDefinition,
|
|
49
|
+
Schemas,
|
|
50
|
+
Schema,
|
|
51
|
+
DatabaseTrigger,
|
|
52
|
+
|
|
53
|
+
...SecurityClass,
|
|
54
|
+
|
|
55
|
+
// Middlewares
|
|
56
|
+
middleware,
|
|
57
|
+
};
|
package/src/middlewares.js
CHANGED
|
@@ -1,24 +1,30 @@
|
|
|
1
|
-
let validateObject = require(
|
|
2
|
-
const userManager = require(
|
|
1
|
+
let validateObject = require("./class/validator");
|
|
2
|
+
const userManager = require("./services/user_manager/service");
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Authentication middleware
|
|
6
|
+
* It checks if incoming request has a valid token in header.authorization
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} ctx - Koa context
|
|
9
|
+
* @param {Function} next - Koa next function
|
|
10
|
+
* @returns {Promise<void>}
|
|
11
|
+
*/
|
|
12
|
+
module.exports.auth = async (ctx, next) => {
|
|
13
|
+
let headers = ctx.header;
|
|
14
|
+
let headersValidated = validateObject(headers, "authorization");
|
|
8
15
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
16
|
+
if (!headersValidated.isValid) ctx.throw(401, "authentication is required");
|
|
17
|
+
|
|
18
|
+
let token = headers.authorization;
|
|
19
|
+
|
|
20
|
+
await userManager.main
|
|
21
|
+
.getUserByToken(token)
|
|
22
|
+
.then(async (user) => {
|
|
23
|
+
ctx.state.user = user;
|
|
24
|
+
await next();
|
|
25
|
+
})
|
|
26
|
+
.catch((err) => {
|
|
27
|
+
console.log(err);
|
|
28
|
+
ctx.throw(err.status || 412, err.message);
|
|
29
|
+
});
|
|
30
|
+
};
|