@6thbridge/utils 1.9.0 → 1.9.2
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/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/logger/logger.js +2 -1
- package/lib/logger/logger.js.map +1 -1
- package/lib/middlewares/common.d.ts +4 -2
- package/lib/middlewares/common.js +30 -0
- package/lib/middlewares/common.js.map +1 -1
- package/lib/middlewares/common.test.d.ts +1 -0
- package/lib/middlewares/common.test.js +500 -0
- package/lib/middlewares/common.test.js.map +1 -0
- package/lib/middlewares/index.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/context.entity.d.ts +16 -0
- package/lib/types/context.entity.js +50 -1
- package/lib/types/context.entity.js.map +1 -1
- package/lib/types/permission.d.ts +1 -1
- package/package.json +1 -1
- package/readme.md +7 -0
|
@@ -2,9 +2,17 @@ import { RequestUserEntity } from './user.entity';
|
|
|
2
2
|
import { RequestClientEntity } from './client.entity';
|
|
3
3
|
import express from 'express';
|
|
4
4
|
import { LoggerInterface } from '../logger';
|
|
5
|
+
import { z } from 'zod';
|
|
5
6
|
import { RabbitMQClient } from '../index';
|
|
6
7
|
import { AuthorizationClientResponse, AuthorizationUserResponse, ValidateUserAccessResponseDTO } from "./authentication.entity";
|
|
7
8
|
export declare const INTERNAL_REQUEST_SOURCE = "internal";
|
|
9
|
+
declare const partnerDataSchema: z.ZodObject<{
|
|
10
|
+
partnerId: z.ZodString;
|
|
11
|
+
name: z.ZodString;
|
|
12
|
+
provider: z.ZodString;
|
|
13
|
+
status: z.ZodString;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
export type PartnerEntity = z.infer<typeof partnerDataSchema>;
|
|
8
16
|
export declare class ContextEntity {
|
|
9
17
|
requestSource?: string;
|
|
10
18
|
clientId?: string;
|
|
@@ -37,3 +45,11 @@ export declare class ContextEntity {
|
|
|
37
45
|
static fromAuthorizationResult(req: express.Request, result: ValidateUserAccessResponseDTO): ContextEntity;
|
|
38
46
|
clone(): this;
|
|
39
47
|
}
|
|
48
|
+
export declare class PartnerContextEntity extends ContextEntity {
|
|
49
|
+
partner: PartnerEntity;
|
|
50
|
+
request: express.Request;
|
|
51
|
+
requestId: string;
|
|
52
|
+
locale: string;
|
|
53
|
+
static fromRequest(req: express.Request, resolvedPartner?: PartnerEntity): PartnerContextEntity;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
@@ -33,11 +33,19 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.ContextEntity = exports.INTERNAL_REQUEST_SOURCE = void 0;
|
|
36
|
+
exports.PartnerContextEntity = exports.ContextEntity = exports.INTERNAL_REQUEST_SOURCE = void 0;
|
|
37
37
|
const _ = __importStar(require("lodash"));
|
|
38
38
|
const crypto_1 = require("crypto");
|
|
39
39
|
const logger_1 = require("../logger/logger");
|
|
40
|
+
const zod_1 = require("zod");
|
|
41
|
+
const custom_exception_1 = require("./custom.exception");
|
|
40
42
|
exports.INTERNAL_REQUEST_SOURCE = 'internal';
|
|
43
|
+
const partnerDataSchema = zod_1.z.object({
|
|
44
|
+
partnerId: zod_1.z.string().regex(/\S/),
|
|
45
|
+
name: zod_1.z.string().regex(/\S/),
|
|
46
|
+
provider: zod_1.z.string().regex(/\S/),
|
|
47
|
+
status: zod_1.z.string().regex(/\S/),
|
|
48
|
+
});
|
|
41
49
|
class ContextEntity {
|
|
42
50
|
constructor() {
|
|
43
51
|
this.logger = new logger_1.Logger({});
|
|
@@ -116,4 +124,45 @@ class ContextEntity {
|
|
|
116
124
|
}
|
|
117
125
|
}
|
|
118
126
|
exports.ContextEntity = ContextEntity;
|
|
127
|
+
class PartnerContextEntity extends ContextEntity {
|
|
128
|
+
static fromRequest(req, resolvedPartner) {
|
|
129
|
+
let partner;
|
|
130
|
+
try {
|
|
131
|
+
if (resolvedPartner !== undefined) {
|
|
132
|
+
partner = partnerDataSchema.parse(resolvedPartner);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const header = req.headers['x-partner-data'];
|
|
136
|
+
if (typeof header !== 'string')
|
|
137
|
+
throw new Error('Missing partner data');
|
|
138
|
+
partner = partnerDataSchema.parse(JSON.parse(header));
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
catch (_a) {
|
|
142
|
+
throw new custom_exception_1.CustomException({
|
|
143
|
+
message: "You don't have permission to access this service. ",
|
|
144
|
+
statusCode: 403,
|
|
145
|
+
errorCode: 'InvalidAuthorization',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
const context = new PartnerContextEntity();
|
|
149
|
+
context.authenticationType = 'partner';
|
|
150
|
+
context.partner = partner;
|
|
151
|
+
context.request = req;
|
|
152
|
+
context.requestId = req.headers['x-request-id'] || (0, crypto_1.randomUUID)();
|
|
153
|
+
context.requestSource = (req.headers['x-request-source'] || req.headers.source);
|
|
154
|
+
context.ip = req.headers['cf-connecting-ip'] || req.ip;
|
|
155
|
+
context.locale = req.headers['x-locale-id'] || 'en';
|
|
156
|
+
context.logger.setProps({
|
|
157
|
+
requestId: context.requestId,
|
|
158
|
+
requestSource: context.requestSource,
|
|
159
|
+
ip: context.ip,
|
|
160
|
+
url: req.originalUrl,
|
|
161
|
+
partnerId: context.partner.partnerId,
|
|
162
|
+
provider: context.partner.provider,
|
|
163
|
+
});
|
|
164
|
+
return context;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.PartnerContextEntity = PartnerContextEntity;
|
|
119
168
|
//# sourceMappingURL=context.entity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.entity.js","sourceRoot":"","sources":["../../src/types/context.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA4B;AAK5B,mCAAoC;AACpC,6CAA0C;
|
|
1
|
+
{"version":3,"file":"context.entity.js","sourceRoot":"","sources":["../../src/types/context.entity.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -4,6 +4,7 @@ A comprehensive TypeScript utility library for Node.js applications, providing r
|
|
|
4
4
|
## Table of Contents
|
|
5
5
|
- [Installation](#installation)
|
|
6
6
|
- [Quick Start](#quick-start)
|
|
7
|
+
- [Partner API keys and routes](#partner-api-keys-and-routes)
|
|
7
8
|
- [Core Modules](#core-modules)
|
|
8
9
|
- [API Reference](#api-reference)
|
|
9
10
|
- [Examples](#examples)
|
|
@@ -50,6 +51,12 @@ const cleanData = HelperUtil.removeFieldsWithEmptyValue(data);
|
|
|
50
51
|
// Log information
|
|
51
52
|
logger.info('Application started', { reference });
|
|
52
53
|
```
|
|
54
|
+
## Partner API keys and routes
|
|
55
|
+
|
|
56
|
+
See [Partner API keys and routes](docs/partner-keys-and-routes.md) for
|
|
57
|
+
`can(['partner'], [])`, the user-service key validation contract, `PartnerContextEntity`,
|
|
58
|
+
and Express route registration examples.
|
|
59
|
+
|
|
53
60
|
## Core Modules
|
|
54
61
|
### 🔧 [Utilities](./src/utils/README.md)
|
|
55
62
|
Essential utility functions for data manipulation, reference generation, and common operations.
|