c2-http 1.0.96 → 1.0.98
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/dist/index.d.ts +2 -1
- package/dist/index.js +3 -1
- package/dist/middleware/global-middleware/item/MiddlewareContext.js +4 -0
- package/dist/middleware/jwt-middlware/MiddlewareJwt.js +1 -1
- package/dist/middleware/jwt-middlware/item/ValidateTokenFlowItem.d.ts +1 -1
- package/dist/middleware/jwt-middlware/item/ValidateTokenFlowItem.js +28 -4
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -11,9 +11,10 @@ import { HttpError } from "./model/HttpError";
|
|
|
11
11
|
import { IControllerOptions } from "./model/IControllerOptions";
|
|
12
12
|
import { ICrudControllerOptions } from "./model/ICrudControllerOptions";
|
|
13
13
|
import { IServerConfig, Server } from "./model/Server";
|
|
14
|
+
import GetTokenFlowItem from "./middleware/jwt-middlware/item/GetTokenFlowItem";
|
|
14
15
|
export declare const convertErrorToHttpError: (error: any) => HttpError;
|
|
15
16
|
export declare const prepareRequestParams: (options?: any) => {
|
|
16
17
|
params: any;
|
|
17
18
|
paramsSerializer: (params: any) => string;
|
|
18
19
|
};
|
|
19
|
-
export { Controller, ControllerRoleMiddleware, ControllerRoute, CrudController, GenerateTokenFlow, getMessage, HttpDispatchDownload, HttpDispatchHandling, IControllerOptions, ICrudControllerOptions, IHealthcheck, IJWTPayload, initializei18n, IOpenApiPath, IServerConfig, MiddlewareCheckScopesFlow, OpenApi, Server };
|
|
20
|
+
export { Controller, ControllerRoleMiddleware, ControllerRoute, CrudController, GenerateTokenFlow, getMessage, HttpDispatchDownload, HttpDispatchHandling, IControllerOptions, ICrudControllerOptions, IHealthcheck, IJWTPayload, initializei18n, IOpenApiPath, IServerConfig, MiddlewareCheckScopesFlow, OpenApi, Server, GetTokenFlowItem };
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Server = exports.OpenApi = exports.MiddlewareCheckScopesFlow = exports.initializei18n = exports.HttpDispatchHandling = exports.HttpDispatchDownload = exports.getMessage = exports.GenerateTokenFlow = exports.CrudController = exports.ControllerRoute = exports.ControllerRoleMiddleware = exports.Controller = exports.prepareRequestParams = exports.convertErrorToHttpError = void 0;
|
|
6
|
+
exports.GetTokenFlowItem = exports.Server = exports.OpenApi = exports.MiddlewareCheckScopesFlow = exports.initializei18n = exports.HttpDispatchHandling = exports.HttpDispatchDownload = exports.getMessage = exports.GenerateTokenFlow = exports.CrudController = exports.ControllerRoute = exports.ControllerRoleMiddleware = exports.Controller = exports.prepareRequestParams = exports.convertErrorToHttpError = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const express_http_context_1 = __importDefault(require("express-http-context"));
|
|
9
9
|
const http_status_1 = require("http-status");
|
|
@@ -31,6 +31,8 @@ Object.defineProperty(exports, "CrudController", { enumerable: true, get: functi
|
|
|
31
31
|
const HttpError_1 = require("./model/HttpError");
|
|
32
32
|
const Server_1 = require("./model/Server");
|
|
33
33
|
Object.defineProperty(exports, "Server", { enumerable: true, get: function () { return Server_1.Server; } });
|
|
34
|
+
const GetTokenFlowItem_1 = __importDefault(require("./middleware/jwt-middlware/item/GetTokenFlowItem"));
|
|
35
|
+
exports.GetTokenFlowItem = GetTokenFlowItem_1.default;
|
|
34
36
|
global.OPEN_API_DOC = {
|
|
35
37
|
"openapi": "3.1.0",
|
|
36
38
|
"info": {
|
|
@@ -9,6 +9,10 @@ class MiddlewareContext {
|
|
|
9
9
|
expressApplication.use(express_http_context_1.default.middleware);
|
|
10
10
|
expressApplication.use((request, response, next) => {
|
|
11
11
|
express_http_context_1.default.set("headers", request.headers);
|
|
12
|
+
express_http_context_1.default.set("requestProtocol", request.protocol);
|
|
13
|
+
express_http_context_1.default.set("requestHost", request.hostname);
|
|
14
|
+
express_http_context_1.default.set("requestOriginalUrl", request.originalUrl);
|
|
15
|
+
express_http_context_1.default.set("request", request);
|
|
12
16
|
next();
|
|
13
17
|
});
|
|
14
18
|
}
|
|
@@ -27,7 +27,7 @@ class MiddlewareCheckTokenFlow {
|
|
|
27
27
|
let token = "";
|
|
28
28
|
try {
|
|
29
29
|
token = GetTokenFlowItem_1.default.get();
|
|
30
|
-
const tokenDecoded = ValidateTokenFlowItem_1.default.exec(token);
|
|
30
|
+
const tokenDecoded = await ValidateTokenFlowItem_1.default.exec(token);
|
|
31
31
|
AddInContextFlowItem_1.default.exec(tokenDecoded);
|
|
32
32
|
next();
|
|
33
33
|
}
|
|
@@ -22,18 +22,42 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
26
30
|
const http_status_1 = require("http-status");
|
|
27
31
|
const jwt = __importStar(require("jsonwebtoken"));
|
|
28
|
-
const i18n_1 = require("../../../i18n");
|
|
29
32
|
const HttpError_1 = require("../../../model/HttpError");
|
|
33
|
+
const express_http_context_1 = __importDefault(require("express-http-context"));
|
|
34
|
+
const axios_1 = __importDefault(require("axios"));
|
|
30
35
|
class ValidateTokenFlowItem {
|
|
31
|
-
exec(token) {
|
|
36
|
+
async exec(token) {
|
|
32
37
|
try {
|
|
33
|
-
|
|
38
|
+
// if the origin api has JWT_SECRET, use it to verify the token
|
|
39
|
+
if (process.env.JWT_SECRET) {
|
|
40
|
+
return jwt.verify(token, process.env.JWT_SECRET ?? "");
|
|
41
|
+
}
|
|
42
|
+
// if the origin api has API_ACCOUNT, use it to validate the token
|
|
43
|
+
if (process.env.API_ACCOUNT) {
|
|
44
|
+
const res = await axios_1.default.get(`${process.env.API_ACCOUNT}/valid-token`, { headers: { Authorization: `Bearer ${token}` } });
|
|
45
|
+
if (res.status !== http_status_1.OK)
|
|
46
|
+
throw new Error("Invalid token or expired");
|
|
47
|
+
return res.data;
|
|
48
|
+
}
|
|
49
|
+
// otherwise, construct the URL to validate the token based on the request context
|
|
50
|
+
const originUrl = `${express_http_context_1.default.get("requestProtocol")}://${express_http_context_1.default.get("requestHost")}${express_http_context_1.default.get("requestOriginalUrl")}`;
|
|
51
|
+
const newUrl = originUrl.replace(/\/api-([^\/]+)/, (_match, p1) => {
|
|
52
|
+
return "/api-account";
|
|
53
|
+
});
|
|
54
|
+
const res = await axios_1.default.get(`${newUrl}/valid-token`, { headers: { Authorization: `Bearer ${token}` } });
|
|
55
|
+
if (res.status !== http_status_1.OK)
|
|
56
|
+
throw new Error("Invalid token or expired");
|
|
57
|
+
return res.data;
|
|
34
58
|
}
|
|
35
59
|
catch (error) {
|
|
36
|
-
throw new HttpError_1.HttpError(http_status_1.FORBIDDEN,
|
|
60
|
+
throw new HttpError_1.HttpError(http_status_1.FORBIDDEN, `error validating token: ${error.message}`);
|
|
37
61
|
}
|
|
38
62
|
}
|
|
39
63
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "c2-http",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.98",
|
|
4
4
|
"description": "Biblioteca Typescript para API NodeJS",
|
|
5
5
|
"repository": "https://cabralsilva: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@github.com/cabralsilva/c2-http.git",
|
|
6
6
|
"author": "Daniel Cabral <cabralconsultoriaemsoftware@gmail.com>",
|