@cryptexlabs/codex-nodejs-common 0.9.2 → 0.9.4
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/package.json +3 -1
- package/lib/src/auth/authf-authenticator.d.ts +10 -0
- package/lib/src/auth/authf-authenticator.js +43 -0
- package/lib/src/auth/authf-authenticator.js.map +1 -0
- package/lib/src/auth/authf-authenticator.options.interface.d.ts +3 -0
- package/lib/src/auth/authf-authenticator.options.interface.js +3 -0
- package/lib/src/auth/authf-authenticator.options.interface.js.map +1 -0
- package/lib/src/auth/index.d.ts +2 -0
- package/lib/src/auth/index.js +2 -0
- package/lib/src/auth/index.js.map +1 -1
- package/lib/src/filter/app-http-exception-filter.d.ts +1 -0
- package/lib/src/filter/app-http-exception-filter.js +6 -1
- package/lib/src/filter/app-http-exception-filter.js.map +1 -1
- package/package.json +3 -1
- package/src/auth/authf-authenticator.options.interface.ts +3 -0
- package/src/auth/authf-authenticator.ts +44 -0
- package/src/auth/index.ts +2 -0
- package/src/filter/app-http-exception-filter.ts +10 -2
package/lib/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cryptexlabs/codex-nodejs-common",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.4",
|
|
4
4
|
"description": "Common code for Assistant applications",
|
|
5
5
|
"main": "lib/src/index.js",
|
|
6
6
|
"repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
|
|
@@ -22,9 +22,11 @@
|
|
|
22
22
|
"@nestjs/platform-ws": "8.0.6",
|
|
23
23
|
"@nestjs/swagger": "5.0.9",
|
|
24
24
|
"@nestjs/websockets": "8.0.6",
|
|
25
|
+
"axios": "0.19.0",
|
|
25
26
|
"rxjs": "^7.1.0"
|
|
26
27
|
},
|
|
27
28
|
"dependencies": {
|
|
29
|
+
"@cryptexlabs/authf-data-model": "^0.9.9",
|
|
28
30
|
"@types/express": "4.17.8",
|
|
29
31
|
"@types/express-serve-static-core": "4.17.24",
|
|
30
32
|
"@types/i18n": "0.12.0",
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AuthenticatorInterface } from "./authenticator.interface";
|
|
2
|
+
import { ClientInterface } from "@cryptexlabs/codex-data-model";
|
|
3
|
+
import { AuthfAuthenticatorOptionsInterface } from "./authf-authenticator.options.interface";
|
|
4
|
+
export declare class AuthfAuthenticator implements AuthenticatorInterface {
|
|
5
|
+
private readonly authfUrl;
|
|
6
|
+
private readonly client;
|
|
7
|
+
private readonly options?;
|
|
8
|
+
constructor(authfUrl: string, client: ClientInterface, options?: AuthfAuthenticatorOptionsInterface);
|
|
9
|
+
authenticate(token: string): Promise<boolean>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthfAuthenticator = void 0;
|
|
4
|
+
const axios_1 = require("axios");
|
|
5
|
+
const uuid_1 = require("uuid");
|
|
6
|
+
class AuthfAuthenticator {
|
|
7
|
+
constructor(authfUrl, client, options) {
|
|
8
|
+
this.authfUrl = authfUrl;
|
|
9
|
+
this.client = client;
|
|
10
|
+
this.options = options;
|
|
11
|
+
}
|
|
12
|
+
async authenticate(token) {
|
|
13
|
+
var _a;
|
|
14
|
+
if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.authEnabled) === false) {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
const now = new Date();
|
|
18
|
+
try {
|
|
19
|
+
await axios_1.default.get(`/api/v1/authenticated`, {
|
|
20
|
+
baseURL: this.authfUrl,
|
|
21
|
+
headers: {
|
|
22
|
+
"X-Correlation-Id": uuid_1.v4(),
|
|
23
|
+
"Accept-Language": "en-US",
|
|
24
|
+
"X-Started": now.toISOString(),
|
|
25
|
+
"X-Created": now.toISOString(),
|
|
26
|
+
"X-Context-Category": "default",
|
|
27
|
+
"X-Context-Id": "none",
|
|
28
|
+
"X-Client-Name": this.client.name,
|
|
29
|
+
"X-Client-Version": this.client.version,
|
|
30
|
+
"X-Client-Variant": this.client.variant,
|
|
31
|
+
"X-Client-Id": this.client.id,
|
|
32
|
+
Authorization: `Bearer ${token}`,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.AuthfAuthenticator = AuthfAuthenticator;
|
|
43
|
+
//# sourceMappingURL=authf-authenticator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authf-authenticator.js","sourceRoot":"","sources":["../../../src/auth/authf-authenticator.ts"],"names":[],"mappings":";;;AAGA,iCAA0B;AAC1B,+BAAoC;AAEpC,MAAa,kBAAkB;IAC7B,YACmB,QAAgB,EAChB,MAAuB,EACvB,OAA4C;QAF5C,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAiB;QACvB,YAAO,GAAP,OAAO,CAAqC;IAC5D,CAAC;IAEG,KAAK,CAAC,YAAY,CAAC,KAAa;;QACrC,IAAI,OAAA,IAAI,CAAC,OAAO,0CAAE,WAAW,MAAK,KAAK,EAAE;YACvC,OAAO,IAAI,CAAC;SACb;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,IAAI;YACF,MAAM,eAAK,CAAC,GAAG,CAAC,uBAAuB,EAAE;gBACvC,OAAO,EAAE,IAAI,CAAC,QAAQ;gBACtB,OAAO,EAAE;oBACP,kBAAkB,EAAE,SAAM,EAAE;oBAC5B,iBAAiB,EAAE,OAAO;oBAC1B,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE;oBAC9B,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE;oBAC9B,oBAAoB,EAAE,SAAS;oBAC/B,cAAc,EAAE,MAAM;oBACtB,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;oBACjC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBACvC,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBACvC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;oBAC7B,aAAa,EAAE,UAAU,KAAK,EAAE;iBACjC;aACF,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAC;SACd;IACH,CAAC;CACF;AArCD,gDAqCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authf-authenticator.options.interface.js","sourceRoot":"","sources":["../../../src/auth/authf-authenticator.options.interface.ts"],"names":[],"mappings":""}
|
package/lib/src/auth/index.d.ts
CHANGED
|
@@ -6,3 +6,5 @@ export * from "./http-authz.attach-objects.guard.util";
|
|
|
6
6
|
export * from "./http-authz.detach-objects.guard.util";
|
|
7
7
|
export * from "./http-authz.action-to-sub-objects.guard.util";
|
|
8
8
|
export * from "./http-authz.list-sub-objects.guard.util";
|
|
9
|
+
export * from "./authf-authenticator";
|
|
10
|
+
export * from "./authf-authenticator.options.interface";
|
package/lib/src/auth/index.js
CHANGED
|
@@ -18,4 +18,6 @@ __exportStar(require("./http-authz.attach-objects.guard.util"), exports);
|
|
|
18
18
|
__exportStar(require("./http-authz.detach-objects.guard.util"), exports);
|
|
19
19
|
__exportStar(require("./http-authz.action-to-sub-objects.guard.util"), exports);
|
|
20
20
|
__exportStar(require("./http-authz.list-sub-objects.guard.util"), exports);
|
|
21
|
+
__exportStar(require("./authf-authenticator"), exports);
|
|
22
|
+
__exportStar(require("./authf-authenticator.options.interface"), exports);
|
|
21
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4DAA0C;AAC1C,+DAA6C;AAC7C,uDAAqC;AACrC,0DAAwC;AACxC,yEAAuD;AACvD,yEAAuD;AACvD,gFAA8D;AAC9D,2EAAyD"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4DAA0C;AAC1C,+DAA6C;AAC7C,uDAAqC;AACrC,0DAAwC;AACxC,yEAAuD;AACvD,yEAAuD;AACvD,gFAA8D;AAC9D,2EAAyD;AACzD,wDAAsC;AACtC,0EAAwD"}
|
|
@@ -7,6 +7,7 @@ export declare class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
|
7
7
|
private readonly fallbackLogger;
|
|
8
8
|
private readonly config;
|
|
9
9
|
constructor(fallbackLocale: Locale, fallbackLogger: LoggerService, config: DefaultConfig, applicationRef?: HttpServer);
|
|
10
|
+
private isDebugLevel;
|
|
10
11
|
catch(exception: any, host: ArgumentsHost): void;
|
|
11
12
|
getDeveloperText(exception: any, locale: any): string;
|
|
12
13
|
}
|
|
@@ -25,6 +25,9 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
|
|
|
25
25
|
this.fallbackLogger = fallbackLogger;
|
|
26
26
|
this.config = config;
|
|
27
27
|
}
|
|
28
|
+
isDebugLevel() {
|
|
29
|
+
return this.config.logLevels.some((level) => level.toLowerCase() === "debug");
|
|
30
|
+
}
|
|
28
31
|
catch(exception, host) {
|
|
29
32
|
const ctx = host.switchToHttp();
|
|
30
33
|
const request = ctx.getRequest();
|
|
@@ -91,7 +94,9 @@ let AppHttpExceptionFilter = class AppHttpExceptionFilter extends core_1.BaseExc
|
|
|
91
94
|
: undefined;
|
|
92
95
|
developerText = this.getDeveloperText(exception, locale);
|
|
93
96
|
const userMessage = exception.userMessage ? exception.userMessage : "";
|
|
94
|
-
const errorHttpResponse = new response_1.ErrorHttpResponse(status, locale, new response_1.ErrorMessage(locale, locales_1.i18nData, null, null,
|
|
97
|
+
const errorHttpResponse = new response_1.ErrorHttpResponse(status, locale, new response_1.ErrorMessage(locale, locales_1.i18nData, null, null, this.isDebugLevel()
|
|
98
|
+
? developerText
|
|
99
|
+
: "Error unavailable in this context", userMessage), this.isDebugLevel() ? exception.stack || null : null, this.config, correlationId, started);
|
|
95
100
|
response.status(status).json(errorHttpResponse);
|
|
96
101
|
}
|
|
97
102
|
getDeveloperText(exception, locale) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-http-exception-filter.js","sourceRoot":"","sources":["../../../src/filter/app-http-exception-filter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"app-http-exception-filter.js","sourceRoot":"","sources":["../../../src/filter/app-http-exception-filter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cryptexlabs/codex-nodejs-common",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.4",
|
|
4
4
|
"description": "Common code for Assistant applications",
|
|
5
5
|
"main": "lib/src/index.js",
|
|
6
6
|
"repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
|
|
@@ -22,9 +22,11 @@
|
|
|
22
22
|
"@nestjs/platform-ws": "8.0.6",
|
|
23
23
|
"@nestjs/swagger": "5.0.9",
|
|
24
24
|
"@nestjs/websockets": "8.0.6",
|
|
25
|
+
"axios": "0.19.0",
|
|
25
26
|
"rxjs": "^7.1.0"
|
|
26
27
|
},
|
|
27
28
|
"dependencies": {
|
|
29
|
+
"@cryptexlabs/authf-data-model": "^0.9.9",
|
|
28
30
|
"@types/express": "4.17.8",
|
|
29
31
|
"@types/express-serve-static-core": "4.17.24",
|
|
30
32
|
"@types/i18n": "0.12.0",
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { AuthenticatorInterface } from "./authenticator.interface";
|
|
2
|
+
import { ClientInterface } from "@cryptexlabs/codex-data-model";
|
|
3
|
+
import { AuthfAuthenticatorOptionsInterface } from "./authf-authenticator.options.interface";
|
|
4
|
+
import axios from "axios";
|
|
5
|
+
import { v4 as uuidv4 } from "uuid";
|
|
6
|
+
|
|
7
|
+
export class AuthfAuthenticator implements AuthenticatorInterface {
|
|
8
|
+
constructor(
|
|
9
|
+
private readonly authfUrl: string,
|
|
10
|
+
private readonly client: ClientInterface,
|
|
11
|
+
private readonly options?: AuthfAuthenticatorOptionsInterface
|
|
12
|
+
) {}
|
|
13
|
+
|
|
14
|
+
public async authenticate(token: string): Promise<boolean> {
|
|
15
|
+
if (this.options?.authEnabled === false) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const now = new Date();
|
|
20
|
+
|
|
21
|
+
try {
|
|
22
|
+
await axios.get(`/api/v1/authenticated`, {
|
|
23
|
+
baseURL: this.authfUrl,
|
|
24
|
+
headers: {
|
|
25
|
+
"X-Correlation-Id": uuidv4(),
|
|
26
|
+
"Accept-Language": "en-US",
|
|
27
|
+
"X-Started": now.toISOString(),
|
|
28
|
+
"X-Created": now.toISOString(),
|
|
29
|
+
"X-Context-Category": "default",
|
|
30
|
+
"X-Context-Id": "none",
|
|
31
|
+
"X-Client-Name": this.client.name,
|
|
32
|
+
"X-Client-Version": this.client.version,
|
|
33
|
+
"X-Client-Variant": this.client.variant,
|
|
34
|
+
"X-Client-Id": this.client.id,
|
|
35
|
+
Authorization: `Bearer ${token}`,
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
return true;
|
|
40
|
+
} catch (e) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
package/src/auth/index.ts
CHANGED
|
@@ -6,3 +6,5 @@ export * from "./http-authz.attach-objects.guard.util";
|
|
|
6
6
|
export * from "./http-authz.detach-objects.guard.util";
|
|
7
7
|
export * from "./http-authz.action-to-sub-objects.guard.util";
|
|
8
8
|
export * from "./http-authz.list-sub-objects.guard.util";
|
|
9
|
+
export * from "./authf-authenticator";
|
|
10
|
+
export * from "./authf-authenticator.options.interface";
|
|
@@ -28,6 +28,12 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
|
28
28
|
super(applicationRef);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
private isDebugLevel(): boolean {
|
|
32
|
+
return this.config.logLevels.some(
|
|
33
|
+
(level) => level.toLowerCase() === "debug"
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
31
37
|
catch(exception: any, host: ArgumentsHost) {
|
|
32
38
|
const ctx = host.switchToHttp();
|
|
33
39
|
const request = ctx.getRequest<Request>();
|
|
@@ -117,10 +123,12 @@ export class AppHttpExceptionFilter extends BaseExceptionFilter {
|
|
|
117
123
|
i18nData,
|
|
118
124
|
null,
|
|
119
125
|
null,
|
|
120
|
-
|
|
126
|
+
this.isDebugLevel()
|
|
127
|
+
? developerText
|
|
128
|
+
: "Error unavailable in this context",
|
|
121
129
|
userMessage
|
|
122
130
|
),
|
|
123
|
-
exception.stack || null,
|
|
131
|
+
this.isDebugLevel() ? exception.stack || null : null,
|
|
124
132
|
this.config,
|
|
125
133
|
correlationId,
|
|
126
134
|
started
|