eservices-back-core 1.4.5 → 1.4.7
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/Server.d.ts +3 -7
- package/dist/Server.d.ts.map +1 -1
- package/dist/Server.js +2 -4
- package/dist/Server.js.map +1 -1
- package/dist/app.js +1 -11
- package/dist/app.js.map +1 -1
- package/dist/auth/use-auth.d.ts +40 -3
- package/dist/auth/use-auth.d.ts.map +1 -1
- package/dist/auth/use-auth.js +184 -102
- package/dist/auth/use-auth.js.map +1 -1
- package/dist/logger/use-logger.d.ts +8 -0
- package/dist/logger/use-logger.d.ts.map +1 -1
- package/dist/logger/use-logger.js +25 -1
- package/dist/logger/use-logger.js.map +1 -1
- package/dist/middleware/auth-middleware.d.ts +7 -2
- package/dist/middleware/auth-middleware.d.ts.map +1 -1
- package/dist/middleware/auth-middleware.js +11 -3
- package/dist/middleware/auth-middleware.js.map +1 -1
- package/dist/middleware/error-middleware.d.ts.map +1 -1
- package/dist/middleware/error-middleware.js +6 -31
- package/dist/middleware/error-middleware.js.map +1 -1
- package/dist/middleware/user-middleware.d.ts.map +1 -1
- package/dist/middleware/user-middleware.js +5 -6
- package/dist/middleware/user-middleware.js.map +1 -1
- package/dist/router/close/test-close-router.d.ts.map +1 -1
- package/dist/router/close/test-close-router.js +4 -2
- package/dist/router/close/test-close-router.js.map +1 -1
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +2 -7
- package/dist/router/index.js.map +1 -1
- package/dist/socket/connect-socket.d.ts +21 -0
- package/dist/socket/connect-socket.d.ts.map +1 -1
- package/dist/socket/connect-socket.js +59 -46
- package/dist/socket/connect-socket.js.map +1 -1
- package/package.json +2 -2
package/dist/Server.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Express } from "express";
|
|
3
3
|
import { Server as HTTPServer } from 'http';
|
|
4
|
-
import { ConfigParams } from "express-openid-connect";
|
|
5
4
|
import CoreSocketServer from "./socket/core-socket-server";
|
|
6
|
-
|
|
5
|
+
import { IAuthOptions } from "./auth/use-auth";
|
|
6
|
+
export default class Server implements Omit<ServerOptions, "amqp" | "oidc"> {
|
|
7
7
|
/**
|
|
8
8
|
* @description Ссылка на express сервер.
|
|
9
9
|
*/
|
|
@@ -40,10 +40,6 @@ export default class Server implements Omit<ServerOptions, "amqp"> {
|
|
|
40
40
|
* @description API URL(App Server)
|
|
41
41
|
*/
|
|
42
42
|
apiUrl: string;
|
|
43
|
-
/**
|
|
44
|
-
* @description Configuration for IdentityServer
|
|
45
|
-
*/
|
|
46
|
-
oidc: ConfigParams;
|
|
47
43
|
/**
|
|
48
44
|
* @description Number of port
|
|
49
45
|
*/
|
|
@@ -91,7 +87,7 @@ export interface ServerOptions {
|
|
|
91
87
|
/**
|
|
92
88
|
* Конфигурация Open ID Client
|
|
93
89
|
*/
|
|
94
|
-
oidc:
|
|
90
|
+
oidc: IAuthOptions;
|
|
95
91
|
/**
|
|
96
92
|
* @description Конфигуарция подключения к RabbitMQ
|
|
97
93
|
*/
|
package/dist/Server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":";AAAA,OAAgB,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AACzC,OAAa,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":";AAAA,OAAgB,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AACzC,OAAa,EAAC,MAAM,IAAI,UAAU,EAAC,MAAM,MAAM,CAAC;AAShD,OAAO,gBAAgB,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAI7C,MAAM,CAAC,OAAO,OAAO,MAAO,YAAW,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1E;;OAEG;IACH,GAAG,EAAE,OAAO,CAAC;IAEb;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IAEtB;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC;IACjB;;OAEG;IACH,IAAI,QAAQ,IAAI,KAAK,GAAG,KAAK,CAE5B;IAED;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,gBAAgB,CAAA;IAExB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IAEf,MAAM,CAAC,SAAS,IAAI,MAAM;gBAGd,MAAM,EAAE,aAAa;IAgBjC,GAAG;IAgBG,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,mBAAmB,EAAE,aAAa,CAAC,qBAAqB,CAAC;CAYlH;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,mBAavD;AAED,MAAM,WAAW,aAAa;IAC7B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAA;IACf;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,IAAI,EAAE,UAAU,CAAA;IAChB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,IAAI,EAAE,YAAY,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE;QACL;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;;;WAIG;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB;;WAEG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAA;KAChB,CAAA;CACD;AAED,oBAAY,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;AACzC,oBAAY,MAAM,GAAG,MAAM,CAAA"}
|
package/dist/Server.js
CHANGED
|
@@ -23,19 +23,17 @@ const use_config_1 = __importDefault(require("./utils/use-config"));
|
|
|
23
23
|
const fs_1 = __importDefault(require("fs"));
|
|
24
24
|
const connect_socket_1 = __importDefault(require("./socket/connect-socket"));
|
|
25
25
|
const connect_rabbit_1 = __importDefault(require("./rabbitmq/connect-rabbit"));
|
|
26
|
+
const auth_middleware_1 = require("./middleware/auth-middleware");
|
|
26
27
|
let serverLink = null;
|
|
27
28
|
class Server {
|
|
28
29
|
constructor(params) {
|
|
29
|
-
var _a, _b, _c, _d;
|
|
30
30
|
serverLink = this;
|
|
31
31
|
Object.assign(this, params);
|
|
32
32
|
(0, use_logger_1.default)();
|
|
33
33
|
this.app = (0, express_1.default)();
|
|
34
34
|
this.httpServer = http_1.default.createServer(this.app);
|
|
35
35
|
this.staticDir = path_1.default.join(params.projectDir, 'static');
|
|
36
|
-
|
|
37
|
-
console.warn('[server-warning] scope offline_access is not provided in authorizationParams.');
|
|
38
|
-
}
|
|
36
|
+
(0, auth_middleware_1.initializeAuth)(params.oidc);
|
|
39
37
|
(0, connect_socket_1.default)(this);
|
|
40
38
|
(0, connect_rabbit_1.default)(this, params.amqp);
|
|
41
39
|
}
|
package/dist/Server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAAyC;AACzC,gDAAgD;AAChD,qEAA+C;AAC/C,sDAAoC;AACpC,qCAAgC;AAChC,gDAAwB;AACxB,oEAA2C;
|
|
1
|
+
{"version":3,"file":"Server.js","sourceRoot":"","sources":["../src/Server.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js
CHANGED
|
@@ -20,18 +20,8 @@ console.log(`For retoken http://localhost:${process.env.PORT}/test-api/re-token`
|
|
|
20
20
|
oidc: {
|
|
21
21
|
issuerBaseURL: process.env.OIDC_ISSUE,
|
|
22
22
|
baseURL: process.env.BASE_URL,
|
|
23
|
-
|
|
24
|
-
secret: "aaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccce",
|
|
23
|
+
clientId: process.env.OIDC_CLIENT_ID,
|
|
25
24
|
clientSecret: process.env.OIDC_SECRET,
|
|
26
|
-
idpLogout: true,
|
|
27
|
-
auth0Logout: true,
|
|
28
|
-
routes: {
|
|
29
|
-
login: false,
|
|
30
|
-
},
|
|
31
|
-
authorizationParams: {
|
|
32
|
-
response_type: "code",
|
|
33
|
-
scope: "openid offline_access profile"
|
|
34
|
-
},
|
|
35
25
|
},
|
|
36
26
|
amqp: {
|
|
37
27
|
vhost: "ar-aiti-dev",
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";;;;;AAAA,qCAAsC;AAEtC,gDAAwB;AAExB,mCAA8C;AAE9C,IAAA,eAAY,EAAC;IACZ,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;CACxC,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,CAAA;AAEjF,IAAA,qBAAY,EAAC;IACZ,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAwB;IAC1C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;IAC3B,UAAU,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IACtC,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC;IACtD,IAAI,EAAE;QACL,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";;;;;AAAA,qCAAsC;AAEtC,gDAAwB;AAExB,mCAA8C;AAE9C,IAAA,eAAY,EAAC;IACZ,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;CACxC,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,CAAA;AAEjF,IAAA,qBAAY,EAAC;IACZ,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAwB;IAC1C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO;IAC3B,UAAU,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;IACtC,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC;IACtD,IAAI,EAAE;QACL,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QACrC,OAAO,EAAG,OAAO,CAAC,GAAG,CAAC,QAAQ;QAC9B,QAAQ,EAAG,OAAO,CAAC,GAAG,CAAC,cAAc;QACrC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;KACrC;IACD,IAAI,EAAE;QACL,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,eAAe;QACzB,QAAQ,EAAE,0DAA0D;KACpE;CACD,CAAC,CAAA"}
|
package/dist/auth/use-auth.d.ts
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { TokenSet } from 'openid-client';
|
|
2
2
|
import { Request } from "express";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
declare const SESSION_KEY = "auth";
|
|
4
|
+
declare global {
|
|
5
|
+
namespace Express {
|
|
6
|
+
interface Request {
|
|
7
|
+
session: {
|
|
8
|
+
[SESSION_KEY]: Partial<IAuthClientState>;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @description Функция обёртка для подключения к ID server. Возвращает middleware для стандартного http подключения. А
|
|
15
|
+
* также для WS.
|
|
16
|
+
*/
|
|
17
|
+
export default function useAuth(options: IAuthOptions): {
|
|
18
|
+
useAuthMiddleware: () => import("express-serve-static-core").Router;
|
|
19
|
+
useWSAuthMiddleware: (req: Request) => Promise<void>;
|
|
20
|
+
silentLogout: (req: Request) => void;
|
|
21
|
+
};
|
|
22
|
+
interface IAuthClientState {
|
|
23
|
+
codeVerifier: string;
|
|
24
|
+
accessToken: string;
|
|
25
|
+
tokenType: string;
|
|
26
|
+
refreshToken: string;
|
|
27
|
+
expiresAt: number;
|
|
28
|
+
claims: ReturnType<TokenSet['claims']>;
|
|
29
|
+
}
|
|
30
|
+
export interface IAuthOptions {
|
|
31
|
+
baseURL: string;
|
|
32
|
+
issuerBaseURL: string;
|
|
33
|
+
clientId: string;
|
|
34
|
+
clientSecret: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @description Возвращает набор данных связанных с авторизацией из сессии.
|
|
38
|
+
*/
|
|
39
|
+
export declare function getAuthStateFormRequest(request: Request): Partial<IAuthClientState>;
|
|
40
|
+
export declare function getFullAccessToken(request: Request): string;
|
|
41
|
+
export {};
|
|
5
42
|
//# sourceMappingURL=use-auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-auth.d.ts","sourceRoot":"","sources":["../../src/auth/use-auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-auth.d.ts","sourceRoot":"","sources":["../../src/auth/use-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,QAAQ,EAAkB,MAAM,eAAe,CAAC;AAE7E,OAAgB,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAKzC,QAAA,MAAM,WAAW,SAAS,CAAC;AAK3B,OAAO,CAAC,MAAM,CAAA;IACb,UAAU,OAAO,CAAC;QACjB,UAAU,OAAO;YAChB,OAAO,EAAE;gBACR,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;aACxC,CAAA;SACD;KACD;CACD;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,EAAE,YAAY;;+BAsHZ,OAAO;wBAqBpB,OAAO;EASlC;AAQD,UAAU,gBAAgB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;CACtC;AACD,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAC,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAA;CACpB;AA2BD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,6BAMvD;AAqBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,UAElD"}
|
package/dist/auth/use-auth.js
CHANGED
|
@@ -12,129 +12,211 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.getFullAccessToken = exports.getAuthStateFormRequest = void 0;
|
|
16
16
|
const openid_client_1 = require("openid-client");
|
|
17
|
-
const openid_client_2 = require("openid-client");
|
|
18
17
|
const debug_1 = __importDefault(require("debug"));
|
|
18
|
+
const express_1 = __importDefault(require("express"));
|
|
19
19
|
const url_1 = require("url");
|
|
20
|
-
const
|
|
21
|
-
|
|
20
|
+
const DEBUG_KEY = "eservices-core:auth";
|
|
21
|
+
// Name of SESSION key that will be used for store auth data.
|
|
22
22
|
const SESSION_KEY = "auth";
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
23
|
+
const REQUEST_TIMEOUT = 10000;
|
|
24
|
+
const debug = (0, debug_1.default)(DEBUG_KEY);
|
|
25
|
+
/**
|
|
26
|
+
* @description Функция обёртка для подключения к ID server. Возвращает middleware для стандартного http подключения. А
|
|
27
|
+
* также для WS.
|
|
28
|
+
*/
|
|
29
|
+
function useAuth(options) {
|
|
30
|
+
openid_client_1.custom.setHttpOptionsDefaults({
|
|
31
|
+
timeout: REQUEST_TIMEOUT,
|
|
32
|
+
});
|
|
33
|
+
const { issuerBaseURL, baseURL } = options;
|
|
34
|
+
let client;
|
|
35
|
+
let APPIssuer;
|
|
36
|
+
const reconnectTimeout = 2000;
|
|
37
|
+
// URL на который нас будет перебрасывать ID server вместе с code для дальнейшего получения токенов.
|
|
38
|
+
const callbackURL = baseURL + "/callback";
|
|
39
|
+
/**
|
|
40
|
+
* @description Функция для чтения метаданных OIDC и создание web-server-client.
|
|
41
|
+
*/
|
|
42
|
+
function init() {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
debug("Attempt to read OIDC issuer");
|
|
45
|
+
APPIssuer = yield openid_client_1.Issuer.discover(issuerBaseURL);
|
|
46
|
+
debug(`Discovered issuer %s success!`, issuerBaseURL);
|
|
47
|
+
client = new APPIssuer.Client({
|
|
48
|
+
client_id: options.clientId,
|
|
49
|
+
client_secret: options.clientSecret,
|
|
50
|
+
response_types: ['code'],
|
|
51
|
+
redirect_uris: [callbackURL]
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
init().catch(() => {
|
|
56
|
+
debug("Read OIDC issuer was failed.");
|
|
57
|
+
setTimeout(init, reconnectTimeout);
|
|
58
|
+
});
|
|
59
|
+
/**
|
|
60
|
+
* @description Обновляет набор данных по переданному refreshToken.
|
|
61
|
+
*/
|
|
62
|
+
function refreshTokenSetByRefreshToken(refreshToken) {
|
|
63
|
+
return client.refresh(refreshToken)
|
|
64
|
+
.then(tokenSet => {
|
|
65
|
+
debug(`Refreshing auth was success!`);
|
|
66
|
+
return tokenSet;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function useAuthMiddleware() {
|
|
70
|
+
const router = express_1.default.Router();
|
|
71
|
+
router.get("/callback", (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
72
|
+
try {
|
|
73
|
+
const params = client.callbackParams(req);
|
|
74
|
+
const { codeVerifier } = getAuthStateFormRequest(req);
|
|
75
|
+
const tokenSet = yield client.callback(callbackURL, params, {
|
|
76
|
+
state: params.state,
|
|
77
|
+
code_verifier: codeVerifier
|
|
78
|
+
});
|
|
79
|
+
const parsedState = JSON.parse(params.state);
|
|
80
|
+
updateSessionByTokenSet(req, tokenSet);
|
|
81
|
+
setAuthSessionKey(req, 'claims', tokenSet.claims());
|
|
82
|
+
debug("Info about user claims was loaded. Redirect to %s", parsedState.redirectTo);
|
|
83
|
+
res.redirect((parsedState === null || parsedState === void 0 ? void 0 : parsedState.redirectTo) || baseURL);
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
debug("Callback auth was rejected with error: ", e);
|
|
87
|
+
return res.redirect(baseURL);
|
|
88
|
+
}
|
|
43
89
|
}));
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
debug(
|
|
51
|
-
|
|
90
|
+
router.get("/logout", (req, res) => {
|
|
91
|
+
cleanAuthStateFormRequest(req);
|
|
92
|
+
res.redirect(APPIssuer.metadata.end_session_endpoint);
|
|
93
|
+
});
|
|
94
|
+
router.use((req, res, next) => __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
try {
|
|
96
|
+
debug(`Process of http auth was started for %s`, (0, url_1.parse)(req.url).pathname);
|
|
97
|
+
const authState = getAuthStateFormRequest(req);
|
|
98
|
+
if (isActiveAuthorizedState(authState)) {
|
|
99
|
+
debug(`AccessToken check was success!`);
|
|
100
|
+
return next();
|
|
101
|
+
}
|
|
102
|
+
if (isRefreshTokenProvided(authState)) {
|
|
103
|
+
debug(`Attempt to refresh auth state.`);
|
|
104
|
+
const newTokenSet = yield refreshTokenSetByRefreshToken(authState.refreshToken);
|
|
105
|
+
updateSessionByTokenSet(req, newTokenSet);
|
|
106
|
+
debug(`The refresh was successful.`);
|
|
107
|
+
return next();
|
|
108
|
+
}
|
|
109
|
+
debug("The user has no authorization information.");
|
|
110
|
+
const codeVerifier = openid_client_1.generators.codeVerifier();
|
|
111
|
+
setAuthSessionKey(req, "codeVerifier", codeVerifier);
|
|
112
|
+
// store the code_verifier in your framework's session mechanism, if it is a cookie based solution
|
|
113
|
+
// it should be httpOnly (not readable by javascript) and encrypted.
|
|
114
|
+
const codeChallenge = openid_client_1.generators.codeChallenge(codeVerifier);
|
|
115
|
+
const state = {
|
|
116
|
+
redirectTo: baseURL + (0, url_1.parse)(req.url).path
|
|
117
|
+
};
|
|
118
|
+
debug("For authorization ul was added next state: %o", state);
|
|
119
|
+
const url = client.authorizationUrl({
|
|
120
|
+
scope: 'openid email profile offline_access',
|
|
121
|
+
code_challenge: codeChallenge,
|
|
122
|
+
code_challenge_method: 'S256',
|
|
123
|
+
state: JSON.stringify(state),
|
|
124
|
+
});
|
|
125
|
+
return res.redirect(url);
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
next(e);
|
|
52
129
|
}
|
|
53
|
-
debug("Is not authorized!");
|
|
54
|
-
// @ts-ignore
|
|
55
|
-
const code_verifier = req.session.code_verifier = openid_client_2.generators.codeVerifier();
|
|
56
|
-
// store the code_verifier in your framework's session mechanism, if it is a cookie based solution
|
|
57
|
-
// it should be httpOnly (not readable by javascript) and encrypted.
|
|
58
|
-
const code_challenge = openid_client_2.generators.codeChallenge(code_verifier);
|
|
59
|
-
// @ts-ignore
|
|
60
|
-
const state = req.session.state = JSON.stringify({
|
|
61
|
-
returnTo: server.oidc.baseURL + (0, url_1.parse)(req.url).path
|
|
62
|
-
});
|
|
63
|
-
debug("State add", state);
|
|
64
|
-
const url = stateSUPER.client.authorizationUrl({
|
|
65
|
-
scope: 'openid email profile offline_access',
|
|
66
|
-
code_challenge,
|
|
67
|
-
code_challenge_method: 'S256',
|
|
68
|
-
state,
|
|
69
|
-
});
|
|
70
|
-
return res.redirect(url);
|
|
71
130
|
}));
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
131
|
+
return router;
|
|
132
|
+
}
|
|
133
|
+
function useWSAuthMiddleware(req) {
|
|
134
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
135
|
+
debug("Process of socket auth was started.");
|
|
136
|
+
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
const authState = getAuthStateFormRequest(req);
|
|
138
|
+
if (isActiveAuthorizedState(authState))
|
|
139
|
+
return void resolve();
|
|
140
|
+
debug("Данные access авторизации устарели или не указаны.");
|
|
141
|
+
if (!isRefreshTokenProvided(authState))
|
|
142
|
+
return reject("Данные refresh авторизации не существуют либо полностью устарели. Необходимо произвести авторизацию заново.");
|
|
143
|
+
const newTokenSet = yield refreshTokenSetByRefreshToken(req.session[SESSION_KEY].refreshToken);
|
|
144
|
+
updateSessionByTokenSet(req, newTokenSet);
|
|
145
|
+
resolve();
|
|
146
|
+
}));
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
function silentLogout(req) {
|
|
150
|
+
cleanAuthStateFormRequest(req);
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
useAuthMiddleware,
|
|
154
|
+
useWSAuthMiddleware,
|
|
155
|
+
silentLogout
|
|
156
|
+
};
|
|
83
157
|
}
|
|
84
|
-
exports.
|
|
158
|
+
exports.default = useAuth;
|
|
159
|
+
/**
|
|
160
|
+
* @description Метод проверяет, является ли auth состояние активным (не устаревшим)
|
|
161
|
+
* @returns {boolean} Если состояние активное - true.
|
|
162
|
+
*/
|
|
85
163
|
function isActiveAuthorizedState(storeState) {
|
|
86
164
|
try {
|
|
87
165
|
const dateNow = new Date();
|
|
88
|
-
|
|
89
|
-
if (storeState.expiresAt > (dateNow.getTime() / 1000))
|
|
166
|
+
if (storeState.expiresAt > (dateNow.getTime() / 1000) + 10)
|
|
90
167
|
return true;
|
|
168
|
+
debug("Auth was expired. %d", storeState.expiresAt - (dateNow.getTime() / 1000));
|
|
91
169
|
return false;
|
|
92
170
|
}
|
|
93
171
|
catch (e) {
|
|
94
172
|
return false;
|
|
95
173
|
}
|
|
96
174
|
}
|
|
97
|
-
|
|
175
|
+
/**
|
|
176
|
+
* @description Проверяет, есть ли в переданном объекте значение refreshToken.
|
|
177
|
+
*/
|
|
178
|
+
function isRefreshTokenProvided(state) {
|
|
98
179
|
return !!state && state.refreshToken;
|
|
99
|
-
};
|
|
100
|
-
function useSocketAuth(req, next) {
|
|
101
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
-
debug("Process of socket auth was started.");
|
|
103
|
-
try {
|
|
104
|
-
// @ts-ignore
|
|
105
|
-
if (isActiveAuthorizedState(req.session[SESSION_KEY]))
|
|
106
|
-
return next();
|
|
107
|
-
debug("Is not active token set");
|
|
108
|
-
// @ts-ignore
|
|
109
|
-
if (!isRefreshTokenProvided(req.session[SESSION_KEY]))
|
|
110
|
-
return next("Refresh token not founded or token set is empty.");
|
|
111
|
-
// @ts-ignore
|
|
112
|
-
const newTokenSet = yield tryRefresh(req.session[SESSION_KEY]);
|
|
113
|
-
// @ts-ignore
|
|
114
|
-
updateSessionByTokenSet(req.session[SESSION_KEY], newTokenSet);
|
|
115
|
-
next();
|
|
116
|
-
}
|
|
117
|
-
catch (e) {
|
|
118
|
-
next(e);
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
180
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
return
|
|
128
|
-
}
|
|
181
|
+
/**
|
|
182
|
+
* @description Возвращает набор данных связанных с авторизацией из сессии.
|
|
183
|
+
*/
|
|
184
|
+
function getAuthStateFormRequest(request) {
|
|
185
|
+
try {
|
|
186
|
+
return request.session[SESSION_KEY];
|
|
187
|
+
}
|
|
188
|
+
catch (e) {
|
|
189
|
+
return undefined;
|
|
190
|
+
}
|
|
129
191
|
}
|
|
130
|
-
|
|
192
|
+
exports.getAuthStateFormRequest = getAuthStateFormRequest;
|
|
193
|
+
/**
|
|
194
|
+
* @description Метод используется для очистили текущей сессии авторизации.
|
|
195
|
+
*/
|
|
196
|
+
function cleanAuthStateFormRequest(request) {
|
|
197
|
+
try {
|
|
198
|
+
delete request.session[SESSION_KEY];
|
|
199
|
+
}
|
|
200
|
+
catch (e) {
|
|
201
|
+
debug("Clean auth state error", e);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function updateSessionByTokenSet(request, tokenSet) {
|
|
205
|
+
setAuthSessionKey(request, 'accessToken', tokenSet.access_token);
|
|
206
|
+
setAuthSessionKey(request, 'tokenType', tokenSet.token_type);
|
|
207
|
+
setAuthSessionKey(request, 'refreshToken', tokenSet.refresh_token);
|
|
208
|
+
setAuthSessionKey(request, 'expiresAt', tokenSet.expires_at);
|
|
131
209
|
debug("Session was updated by TokenSet");
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
210
|
+
}
|
|
211
|
+
function getFullAccessToken(request) {
|
|
212
|
+
return `${request.session[SESSION_KEY].tokenType} ${request.session[SESSION_KEY].accessToken}`;
|
|
213
|
+
}
|
|
214
|
+
exports.getFullAccessToken = getFullAccessToken;
|
|
215
|
+
function setAuthSessionKey(req, key, value) {
|
|
216
|
+
if (!req.session[SESSION_KEY]) {
|
|
217
|
+
req.session[SESSION_KEY] = {};
|
|
218
|
+
debug("Auth session was init.");
|
|
219
|
+
}
|
|
220
|
+
req.session[SESSION_KEY][key] = value;
|
|
139
221
|
}
|
|
140
222
|
//# sourceMappingURL=use-auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-auth.js","sourceRoot":"","sources":["../../src/auth/use-auth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"use-auth.js","sourceRoot":"","sources":["../../src/auth/use-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
+
import winston from "winston";
|
|
1
2
|
export default function useLogger(): void;
|
|
3
|
+
export declare class Logger {
|
|
4
|
+
static instance: Logger;
|
|
5
|
+
static logger: winston.Logger;
|
|
6
|
+
constructor();
|
|
7
|
+
static info(...attrs: any[]): void;
|
|
8
|
+
static error(...attrs: any[]): void;
|
|
9
|
+
}
|
|
2
10
|
//# sourceMappingURL=use-logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-logger.d.ts","sourceRoot":"","sources":["../../src/logger/use-logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-logger.d.ts","sourceRoot":"","sources":["../../src/logger/use-logger.ts"],"names":[],"mappings":"AAEA,OAAO,OAAoD,MAAM,SAAS,CAAC;AA4B3E,MAAM,CAAC,OAAO,UAAU,SAAS,SAyBhC;AAED,qBAAa,MAAM;IACf,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAA;;IAa7B,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE;IAI3B,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,EAAE;CAI/B"}
|
|
@@ -3,6 +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.Logger = void 0;
|
|
6
7
|
const path_1 = __importDefault(require("path"));
|
|
7
8
|
const Server_1 = __importDefault(require("../Server"));
|
|
8
9
|
const winston_1 = require("winston");
|
|
@@ -40,12 +41,35 @@ function useLogger() {
|
|
|
40
41
|
'lists',
|
|
41
42
|
'actions',
|
|
42
43
|
'criterion',
|
|
43
|
-
'dev'
|
|
44
|
+
'dev',
|
|
45
|
+
'log'
|
|
44
46
|
];
|
|
45
47
|
config.forEach(data => {
|
|
46
48
|
if (typeof data === "string")
|
|
47
49
|
addLogger(data);
|
|
48
50
|
});
|
|
51
|
+
// tslint:disable-next-line:no-unused-expression
|
|
52
|
+
new Logger();
|
|
49
53
|
}
|
|
50
54
|
exports.default = useLogger;
|
|
55
|
+
class Logger {
|
|
56
|
+
constructor() {
|
|
57
|
+
Logger.instance = this;
|
|
58
|
+
Logger.logger = (0, winston_1.createLogger)({
|
|
59
|
+
format: winston_1.format.combine(winston_1.format.splat(), winston_1.format.simple()),
|
|
60
|
+
transports: [
|
|
61
|
+
new winston_1.transports.File({ filename: getFileName('log') })
|
|
62
|
+
]
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
static info(...attrs) {
|
|
66
|
+
// @ts-ignore
|
|
67
|
+
Logger.logger.log('info', ...attrs);
|
|
68
|
+
}
|
|
69
|
+
static error(...attrs) {
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
Logger.logger.log('error', ...attrs);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.Logger = Logger;
|
|
51
75
|
//# sourceMappingURL=use-logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-logger.js","sourceRoot":"","sources":["../../src/logger/use-logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-logger.js","sourceRoot":"","sources":["../../src/logger/use-logger.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,uDAA+B;AAC/B,qCAA2E;AAE3E,SAAS,WAAW,CAAC,IAAY;IAC7B,OAAO,cAAI,CAAC,IAAI,CAAC,gBAAM,CAAC,SAAS,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;AAC3E,CAAC;AACD,SAAS,SAAS,CAAC,IAAY;IAC3B,IAAI,IAAI,KAAK,KAAK,EAAE;QAChB,OAAO,KAAK,iBAAO,CAAC,GAAG,CAAC,IAAI,EAAE;YAC1B,MAAM,EAAE,gBAAM,CAAC,OAAO,CAClB,gBAAM,CAAC,KAAK,EAAE,EACd,gBAAM,CAAC,MAAM,EAAE,CAClB;YACD,UAAU,EAAE;gBACR,IAAI,oBAAU,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,EAAC,CAAC;aACrD;SACJ,CAAC,CAAA;KACL;IACD,iBAAO,CAAC,GAAG,CAAC,IAAI,EAAE;QACd,MAAM,EAAE,gBAAM,CAAC,OAAO,CAClB,gBAAM,CAAC,SAAS,EAAE,EAClB,gBAAM,CAAC,WAAW,EAAE,CACvB;QACD,UAAU,EAAE;YACR,IAAI,oBAAU,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,EAAC,CAAC;SACrD;KACJ,CAAC,CAAA;AACN,CAAC;AAED,SAAwB,SAAS;IAC7B,MAAM,MAAM,GAAG;QACX,QAAQ;QACR,UAAU;QACV,SAAS;QACT,MAAM;QACN,OAAO;QACP,QAAQ;QACR,SAAS;QACT,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,OAAO;QACP,SAAS;QACT,WAAW;QACX,KAAK;QACL,KAAK;KACR,CAAA;IACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAClB,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAA;IAEF,gDAAgD;IAChD,IAAI,MAAM,EAAE,CAAA;AAEhB,CAAC;AAzBD,4BAyBC;AAED,MAAa,MAAM;IAGf;QACI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,MAAM,CAAC,MAAM,GAAI,IAAA,sBAAY,EAAC;YAC1B,MAAM,EAAE,gBAAM,CAAC,OAAO,CAClB,gBAAM,CAAC,KAAK,EAAE,EACd,gBAAM,CAAC,MAAM,EAAE,CAClB;YACD,UAAU,EAAE;gBACR,IAAI,oBAAU,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,EAAC,CAAC;aACtD;SACJ,CAAC,CAAC;IACP,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAY;QACvB,aAAa;QACb,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,GAAG,KAAY;QACxB,aAAa;QACb,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAC,GAAG,KAAK,CAAC,CAAA;IACvC,CAAC;CACJ;AAvBD,wBAuBC"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
/// <reference types="qs" />
|
|
2
2
|
/// <reference types="express" />
|
|
3
|
-
|
|
4
|
-
export
|
|
3
|
+
import { IAuthOptions } from "../auth/use-auth";
|
|
4
|
+
export declare function authModule(): {
|
|
5
|
+
useAuthMiddleware: () => import("express-serve-static-core").Router;
|
|
6
|
+
useWSAuthMiddleware: (req: import("express").Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>) => Promise<void>;
|
|
7
|
+
silentLogout: (req: import("express").Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>) => void;
|
|
8
|
+
};
|
|
9
|
+
export declare function initializeAuth(options: IAuthOptions): void;
|
|
5
10
|
//# sourceMappingURL=auth-middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/auth-middleware.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth-middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/auth-middleware.ts"],"names":[],"mappings":";;AAAA,OAAgB,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAGvD,wBAAgB,UAAU;;;;EAEzB;AACD,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,QAEnD"}
|
|
@@ -3,7 +3,15 @@ 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
|
-
|
|
7
|
-
const
|
|
8
|
-
|
|
6
|
+
exports.initializeAuth = exports.authModule = void 0;
|
|
7
|
+
const use_auth_1 = __importDefault(require("../auth/use-auth"));
|
|
8
|
+
let authAppServerModule;
|
|
9
|
+
function authModule() {
|
|
10
|
+
return authAppServerModule;
|
|
11
|
+
}
|
|
12
|
+
exports.authModule = authModule;
|
|
13
|
+
function initializeAuth(options) {
|
|
14
|
+
authAppServerModule = (0, use_auth_1.default)(options);
|
|
15
|
+
}
|
|
16
|
+
exports.initializeAuth = initializeAuth;
|
|
9
17
|
//# sourceMappingURL=auth-middleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-middleware.js","sourceRoot":"","sources":["../../src/middleware/auth-middleware.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth-middleware.js","sourceRoot":"","sources":["../../src/middleware/auth-middleware.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAuD;AACvD,IAAI,mBAA+C,CAAC;AAEpD,SAAgB,UAAU;IACzB,OAAO,mBAAmB,CAAC;AAC5B,CAAC;AAFD,gCAEC;AACD,SAAgB,cAAc,CAAC,OAAqB;IACnD,mBAAmB,GAAG,IAAA,kBAAO,EAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAFD,wCAEC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/error-middleware.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"error-middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/error-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;wCAKV,OAAO,OAAO,QAAQ;AAAtD,wBAmBE"}
|
|
@@ -14,38 +14,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const api_error_1 = __importDefault(require("../errors/api-error"));
|
|
16
16
|
const error_response_dto_1 = __importDefault(require("../dtos/error-response-dto"));
|
|
17
|
-
const
|
|
17
|
+
const auth_middleware_1 = require("./auth-middleware");
|
|
18
|
+
const use_logger_1 = require("../logger/use-logger");
|
|
18
19
|
exports.default = (err, req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
query: req.query,
|
|
24
|
-
body: req.body,
|
|
25
|
-
type: req.method,
|
|
26
|
-
params: req.params,
|
|
27
|
-
});
|
|
28
|
-
if (req.method === "GET" &&
|
|
29
|
-
!req.infoUserId) {
|
|
30
|
-
try {
|
|
31
|
-
return yield res.oidc.logout({ returnTo: '/auth' });
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
res.clearCookie('token', { httpOnly: true });
|
|
35
|
-
res.clearCookie('idsrv.session', { httpOnly: true });
|
|
36
|
-
res.clearCookie('.AspNetCore.Identity.Application', { httpOnly: true });
|
|
37
|
-
res.redirect('/auth');
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Refresh token is not present in TokenSet
|
|
43
|
-
*/
|
|
44
|
-
if (err instanceof Error && err.message.includes("refresh")) {
|
|
45
|
-
res.clearCookie('token', { httpOnly: true });
|
|
46
|
-
res.clearCookie('idsrv.session', { httpOnly: true });
|
|
47
|
-
res.clearCookie('.AspNetCore.Identity.Application', { httpOnly: true });
|
|
48
|
-
return yield res.oidc.logout({ returnTo: '/auth' });
|
|
20
|
+
use_logger_1.Logger.error("Error Middleware", err);
|
|
21
|
+
if (req.method === "GET" && !req.infoUserId) {
|
|
22
|
+
(0, auth_middleware_1.authModule)().silentLogout(req);
|
|
23
|
+
return res.redirect("/logout");
|
|
49
24
|
}
|
|
50
25
|
if (typeof err === "string")
|
|
51
26
|
return void res.status(400).json((0, error_response_dto_1.default)(err, 400));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-middleware.js","sourceRoot":"","sources":["../../src/middleware/error-middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oEAA2C;AAE3C,oFAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"error-middleware.js","sourceRoot":"","sources":["../../src/middleware/error-middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,oEAA2C;AAE3C,oFAA0D;AAC1D,uDAA6C;AAC7C,qDAA4C;AAE5C,kBAAe,CAAO,GAAG,EAAE,GAAY,EAAE,GAAa,EAAE,IAAI,EAAE,EAAE;IAE/D,mBAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAEtC,IAAK,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,EAAG;QAC9C,IAAA,4BAAU,GAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;KAC9B;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ;QAC1B,OAAO,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAE9D,IAAI,GAAG,YAAY,mBAAQ;QAC1B,OAAO,KAAK,GAAG;aACd,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;aAClB,IAAI,CAAC,IAAA,4BAAgB,EAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAElD,IAAI,GAAG,YAAY,KAAK;QACvB,OAAO,KAAK,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAA,4BAAgB,EAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AACvE,CAAC,CAAA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/user-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"user-middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/user-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;8BAML,OAAO;AAAlC,wBAoBC"}
|
|
@@ -14,16 +14,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
const get_current_context_from_request_1 = __importDefault(require("../utils/get-current-context-from-request"));
|
|
16
16
|
const debug_1 = __importDefault(require("debug"));
|
|
17
|
+
const use_auth_1 = require("../auth/use-auth");
|
|
17
18
|
const debug = (0, debug_1.default)("auth");
|
|
18
19
|
exports.default = (req, res, next) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
20
|
try {
|
|
20
21
|
debug("Starting get user data.");
|
|
21
|
-
|
|
22
|
-
req.infoAccessToken =
|
|
23
|
-
|
|
24
|
-
req.
|
|
25
|
-
// @ts-ignore
|
|
26
|
-
req.infoPersonId = Number.parseInt(req.session.claims["AppRegister.Claim.PersonId"], 10);
|
|
22
|
+
const authState = (0, use_auth_1.getAuthStateFormRequest)(req);
|
|
23
|
+
req.infoAccessToken = (0, use_auth_1.getFullAccessToken)(req);
|
|
24
|
+
req.infoUserId = Number.parseInt(authState.claims["AppRegister.Claim.UserId"], 10);
|
|
25
|
+
req.infoPersonId = Number.parseInt(authState.claims["AppRegister.Claim.PersonId"], 10);
|
|
27
26
|
req.infoCurrentContextId = (0, get_current_context_from_request_1.default)(req);
|
|
28
27
|
debug("Ending get user data.");
|
|
29
28
|
next();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-middleware.js","sourceRoot":"","sources":["../../src/middleware/user-middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,iHAAqF;AAErF,kDAAgC;
|
|
1
|
+
{"version":3,"file":"user-middleware.js","sourceRoot":"","sources":["../../src/middleware/user-middleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,iHAAqF;AAErF,kDAAgC;AAChC,+CAA6E;AAE7E,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,MAAM,CAAC,CAAA;AAEjC,kBAAe,CAAO,GAAY,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAEhD,IAAI;QACH,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,IAAA,kCAAuB,EAAC,GAAG,CAAC,CAAC;QAE/C,GAAG,CAAC,eAAe,GAAG,IAAA,6BAAkB,EAAC,GAAG,CAAC,CAAC;QAE9C,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,CAAW,EAAE,EAAE,CAAC,CAAC;QAC7F,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,4BAA4B,CAAW,EAAE,EAAE,CAAC,CAAC;QACjG,GAAG,CAAC,oBAAoB,GAAG,IAAA,0CAA4B,EAAC,GAAG,CAAC,CAAC;QAC7D,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAE/B,IAAI,EAAE,CAAC;KACP;IAAC,OAAO,CAAC,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;QACtB,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,CAAC;KACR;AACF,CAAC,CAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-close-router.d.ts","sourceRoot":"","sources":["../../../src/router/close/test-close-router.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"test-close-router.d.ts","sourceRoot":"","sources":["../../../src/router/close/test-close-router.ts"],"names":[],"mappings":";AAYA,wBAoGC"}
|
|
@@ -16,7 +16,6 @@ const express_1 = __importDefault(require("express"));
|
|
|
16
16
|
const index_1 = __importDefault(require("./index"));
|
|
17
17
|
const test_middleware_1 = __importDefault(require("./../../middleware/test-middleware"));
|
|
18
18
|
const store_1 = require("../../store");
|
|
19
|
-
const auth_middleware_1 = __importDefault(require("../../middleware/auth-middleware"));
|
|
20
19
|
const actions_1 = require("../../store/actions");
|
|
21
20
|
const user_middleware_1 = __importDefault(require("../../middleware/user-middleware"));
|
|
22
21
|
const Store_1 = __importDefault(require("../../store/Store"));
|
|
@@ -25,6 +24,9 @@ const metadata_service_1 = __importDefault(require("../../services/metadata-serv
|
|
|
25
24
|
const connect_socket_1 = require("../../socket/connect-socket");
|
|
26
25
|
exports.default = () => {
|
|
27
26
|
const TestCloseRouter = express_1.default.Router();
|
|
27
|
+
TestCloseRouter.get('/', (req, res) => {
|
|
28
|
+
res.send("Is Test-API");
|
|
29
|
+
});
|
|
28
30
|
TestCloseRouter.get('/session', (req, res) => {
|
|
29
31
|
// @ts-ignore
|
|
30
32
|
res.json(req.session);
|
|
@@ -74,7 +76,7 @@ exports.default = () => {
|
|
|
74
76
|
next(e);
|
|
75
77
|
}
|
|
76
78
|
});
|
|
77
|
-
TestCloseRouter.get('/re-token', [
|
|
79
|
+
TestCloseRouter.get('/re-token', [user_middleware_1.default], (req, res) => {
|
|
78
80
|
store_1.store.dispatch((0, actions_1.setTestToken)(req.infoAccessToken));
|
|
79
81
|
res.json({
|
|
80
82
|
message: 'Token was updated.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-close-router.js","sourceRoot":"","sources":["../../../src/router/close/test-close-router.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAAmD;AACnD,oDAAkC;AAClC,yFAAgE;AAChE,uCAAkC;AAClC,
|
|
1
|
+
{"version":3,"file":"test-close-router.js","sourceRoot":"","sources":["../../../src/router/close/test-close-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,OAAO,UAAU,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,OAAO,UAAU,SAAS,SAoEhC"}
|
package/dist/router/index.js
CHANGED
|
@@ -17,6 +17,7 @@ const express_1 = __importDefault(require("express"));
|
|
|
17
17
|
const path_1 = __importDefault(require("path"));
|
|
18
18
|
const close_1 = __importDefault(require("./close"));
|
|
19
19
|
const test_close_router_1 = __importDefault(require("./close/test-close-router"));
|
|
20
|
+
const auth_middleware_1 = require("../middleware/auth-middleware");
|
|
20
21
|
const server_middleware_1 = __importDefault(require("../middleware/server-middleware"));
|
|
21
22
|
const user_middleware_1 = __importDefault(require("../middleware/user-middleware"));
|
|
22
23
|
const error_middleware_1 = __importDefault(require("../middleware/error-middleware"));
|
|
@@ -25,7 +26,6 @@ const cookie_parser_1 = __importDefault(require("cookie-parser"));
|
|
|
25
26
|
const Server_1 = __importDefault(require("../Server"));
|
|
26
27
|
const api_error_1 = __importDefault(require("../errors/api-error"));
|
|
27
28
|
const open_api_router_1 = __importDefault(require("./open/open-api-router"));
|
|
28
|
-
const use_auth_1 = require("../auth/use-auth");
|
|
29
29
|
const session_middleware_1 = require("../middleware/session-middleware");
|
|
30
30
|
function useRouter() {
|
|
31
31
|
const server = Server_1.default.getServer();
|
|
@@ -55,7 +55,7 @@ function useRouter() {
|
|
|
55
55
|
// test
|
|
56
56
|
app.use("/test-api", (0, test_close_router_1.default)());
|
|
57
57
|
app.use("/open-api", open_api_router_1.default);
|
|
58
|
-
(0,
|
|
58
|
+
app.use((0, auth_middleware_1.authModule)().useAuthMiddleware());
|
|
59
59
|
app.use(user_middleware_1.default);
|
|
60
60
|
// Protect level
|
|
61
61
|
// app.use(authMiddleware());
|
|
@@ -69,11 +69,6 @@ function useRouter() {
|
|
|
69
69
|
app.get("/", (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
70
70
|
res.redirect('/main');
|
|
71
71
|
}));
|
|
72
|
-
app.get('/~logout', (req, res) => {
|
|
73
|
-
res.oidc.logout({
|
|
74
|
-
returnTo: '/login', logoutParams: { a: '123' }
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
72
|
app.use((req, res, next) => {
|
|
78
73
|
next(api_error_1.default.ApiNotFounded());
|
|
79
74
|
});
|
package/dist/router/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8DAAsC;AACtC,sDAAyC;AACzC,gDAA0B;AAE1B,oDAAkC;AAClC,kFAAwD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,31 @@ import Server from "../Server";
|
|
|
5
5
|
* чтения данных и т.д.
|
|
6
6
|
*/
|
|
7
7
|
export default function connectSocket(webServer: Server): void;
|
|
8
|
+
/**
|
|
9
|
+
* @description Метод предназначен для отправки сообщения в WS.
|
|
10
|
+
*
|
|
11
|
+
* @param {WebSocket} ws websocket connection.
|
|
12
|
+
* @param {String} event Message event name.
|
|
13
|
+
* @param {any} response Payload of message.
|
|
14
|
+
* @param {number} requestId Number of request. If Current message is response, the requestId will be taken from request.
|
|
15
|
+
*/
|
|
8
16
|
export declare function sendWSResponse(ws: WebSocket, event: string, response: any, requestId?: number): void;
|
|
9
17
|
export interface ISocketOptions {
|
|
18
|
+
/**
|
|
19
|
+
* @description Целый AccessToken, который нужно использовать в запросах на AppServer.
|
|
20
|
+
*/
|
|
10
21
|
token: string;
|
|
22
|
+
/**
|
|
23
|
+
* @description Вычисленный UsageContext по переданному URL.
|
|
24
|
+
*/
|
|
11
25
|
usageContext: string;
|
|
26
|
+
/**
|
|
27
|
+
* @description Идентификатор текущего контекста пользователя.
|
|
28
|
+
*/
|
|
12
29
|
contextId: number;
|
|
30
|
+
/**
|
|
31
|
+
* @description Идентификатор пользователя.
|
|
32
|
+
*/
|
|
33
|
+
userId: number;
|
|
13
34
|
}
|
|
14
35
|
//# sourceMappingURL=connect-socket.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-socket.d.ts","sourceRoot":"","sources":["../../src/socket/connect-socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,IAAI,CAAC;AAC7B,OAAO,MAAM,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"connect-socket.d.ts","sourceRoot":"","sources":["../../src/socket/connect-socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,IAAI,CAAC;AAC7B,OAAO,MAAM,MAAM,WAAW,CAAC;AAiB/B;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,SAAS,EAAE,MAAM,QAsFtD;AAkBD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAE,MAAU,QAMhG;AAaD,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;CACd"}
|
|
@@ -18,26 +18,28 @@ const get_usage_context_1 = __importDefault(require("../utils/get-usage-context"
|
|
|
18
18
|
const metadata_read_socket_1 = require("./metadata-read-socket");
|
|
19
19
|
const configuration_read_socket_1 = require("./configuration-read-socket");
|
|
20
20
|
const entity_count_socket_1 = require("./entity-count-socket");
|
|
21
|
-
const winston_1 = require("winston");
|
|
22
21
|
const core_socket_server_1 = __importDefault(require("./core-socket-server"));
|
|
23
22
|
const http_1 = __importDefault(require("http"));
|
|
24
|
-
const use_auth_1 = require("../auth/use-auth");
|
|
25
23
|
const debug_1 = __importDefault(require("debug"));
|
|
26
24
|
const session_middleware_1 = require("../middleware/session-middleware");
|
|
27
|
-
const
|
|
25
|
+
const auth_middleware_1 = require("../middleware/auth-middleware");
|
|
26
|
+
const use_auth_1 = require("../auth/use-auth");
|
|
27
|
+
const use_logger_1 = require("../logger/use-logger");
|
|
28
|
+
const debug = (0, debug_1.default)("eservices-core:socket");
|
|
29
|
+
const SOCKET_EVENT_ERROR = 'request-error';
|
|
28
30
|
/**
|
|
29
31
|
* @description Метод используется для присоединения сокета к HTTP серверу. Также добавляются простые обработчики для
|
|
30
32
|
* чтения данных и т.д.
|
|
31
33
|
*/
|
|
32
34
|
function connectSocket(webServer) {
|
|
33
35
|
debug("Socket was installed.");
|
|
34
|
-
const devLogger = winston_1.loggers.get('dev');
|
|
35
36
|
const socketServer = webServer.socket = new core_socket_server_1.default({
|
|
36
37
|
noServer: true,
|
|
37
38
|
perMessageDeflate: true
|
|
38
39
|
})
|
|
39
40
|
.on('connection', function connection(ws, req) {
|
|
40
|
-
|
|
41
|
+
const userId = req.infoUserId;
|
|
42
|
+
debug(`Socket connection for %d was implemented.`, userId);
|
|
41
43
|
socketServer.addSocket(ws, req.infoUserId);
|
|
42
44
|
sendWSResponse(ws, 'configuration:read', (0, configuration_read_socket_1.readConfiguration)());
|
|
43
45
|
debug("Socket was added to server and configuration was send.");
|
|
@@ -45,13 +47,16 @@ function connectSocket(webServer) {
|
|
|
45
47
|
ws.on('message', function message(stringData) {
|
|
46
48
|
return __awaiter(this, void 0, void 0, function* () {
|
|
47
49
|
const info = JSON.parse(stringData.toString());
|
|
48
|
-
const options = {
|
|
49
|
-
token: req.infoAccessToken,
|
|
50
|
-
usageContext: (0, get_usage_context_1.default)(info.url),
|
|
51
|
-
contextId: info.contextId
|
|
52
|
-
};
|
|
53
|
-
const sendResult = wrapResponse(ws, info.requestId, info.event);
|
|
54
50
|
try {
|
|
51
|
+
yield (0, auth_middleware_1.authModule)().useWSAuthMiddleware(req);
|
|
52
|
+
debug('Socket-message from user(%d) authorize successfully.', userId);
|
|
53
|
+
const options = {
|
|
54
|
+
token: (0, use_auth_1.getFullAccessToken)(req),
|
|
55
|
+
usageContext: (0, get_usage_context_1.default)(info.url),
|
|
56
|
+
contextId: info.contextId,
|
|
57
|
+
userId
|
|
58
|
+
};
|
|
59
|
+
const sendResult = wrapResponse(ws, info.requestId, info.event);
|
|
55
60
|
switch (info.event) {
|
|
56
61
|
case "configuration:read": {
|
|
57
62
|
sendResult((0, configuration_read_socket_1.readConfiguration)());
|
|
@@ -72,58 +77,48 @@ function connectSocket(webServer) {
|
|
|
72
77
|
}
|
|
73
78
|
}
|
|
74
79
|
catch (err) {
|
|
75
|
-
|
|
76
|
-
|
|
80
|
+
use_logger_1.Logger.info(`Socket request error. UserId %d. RequestId %d`, userId, info.requestId, err);
|
|
81
|
+
sendWSError(ws, err, info.requestId);
|
|
77
82
|
}
|
|
78
83
|
});
|
|
79
84
|
});
|
|
80
85
|
ws.on('close', () => {
|
|
81
86
|
debug("Socket Connection was closed");
|
|
87
|
+
use_logger_1.Logger.info("Socket connection closed.");
|
|
82
88
|
socketServer.deleteSocket(ws.id);
|
|
83
89
|
});
|
|
84
90
|
});
|
|
91
|
+
/**
|
|
92
|
+
* @description Перехватчик используется для того для проверки авторизации пользователя. Socket соединение не будет
|
|
93
|
+
* установлено в случае, если пользователь является неавторизованным.
|
|
94
|
+
*
|
|
95
|
+
* После успешной авторизации, сокет соединение успешно устанавливается.
|
|
96
|
+
*/
|
|
85
97
|
webServer.httpServer.on('upgrade', function upgrade(request, socket, head) {
|
|
86
|
-
debug(`Start upgrade. Http
|
|
98
|
+
debug(`Start upgrade. Http Version: %s.`, request.httpVersion);
|
|
87
99
|
const response = new http_1.default.ServerResponse(request);
|
|
88
100
|
response.assignSocket(socket);
|
|
89
101
|
response.on('finish', () => {
|
|
90
102
|
debug("Socket response finished");
|
|
91
103
|
response.socket.destroy();
|
|
92
104
|
});
|
|
93
|
-
(0, session_middleware_1.sessionParser)(request, response, () => {
|
|
94
|
-
// @ts-ignore
|
|
105
|
+
(0, session_middleware_1.sessionParser)(request, response, () => __awaiter(this, void 0, void 0, function* () {
|
|
95
106
|
socket.on('error', onSocketError);
|
|
96
107
|
try {
|
|
97
|
-
(0,
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
socket.write('HTTP/1.1 401 Unauthorized\r\n\r\n');
|
|
104
|
-
socket.destroy();
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
socket.removeListener('error', onSocketError);
|
|
108
|
-
// @ts-ignore
|
|
109
|
-
request.infoUserId = Number.parseInt(request.session.claims["AppRegister.Claim.UserId"], 10);
|
|
110
|
-
// @ts-ignore
|
|
111
|
-
request.infoAccessToken = `${request.session.auth.tokenType} ${request.session.auth.accessToken}`;
|
|
112
|
-
debug("Socket set info data.");
|
|
113
|
-
socketServer.handleUpgrade(request, socket, head, function done(ws) {
|
|
114
|
-
debug("Socket Server handle upgrade and emit connection.");
|
|
115
|
-
socketServer.emit('connection', ws, request);
|
|
116
|
-
});
|
|
117
|
-
});
|
|
108
|
+
yield (0, auth_middleware_1.authModule)().useWSAuthMiddleware(request);
|
|
109
|
+
debug("Primary socket check auth was success!");
|
|
110
|
+
socket.removeListener('error', onSocketError);
|
|
111
|
+
socketServer.handleUpgrade(request, socket, head, function done(ws) {
|
|
112
|
+
debug("Socket Server handle upgrade and emit connection.");
|
|
113
|
+
socketServer.emit('connection', ws, request);
|
|
118
114
|
});
|
|
119
115
|
}
|
|
120
116
|
catch (e) {
|
|
117
|
+
socket.write('HTTP/1.1 401 Unauthorized\r\n\r\n');
|
|
118
|
+
socket.destroy();
|
|
121
119
|
debug(e);
|
|
122
|
-
console.log("-", request);
|
|
123
|
-
devLogger.info(`Try/Catch for AuthMiddleware with error!`, e);
|
|
124
|
-
console.log('Socket error', e);
|
|
125
120
|
}
|
|
126
|
-
});
|
|
121
|
+
}));
|
|
127
122
|
});
|
|
128
123
|
}
|
|
129
124
|
exports.default = connectSocket;
|
|
@@ -132,17 +127,24 @@ exports.default = connectSocket;
|
|
|
132
127
|
*/
|
|
133
128
|
function onSocketError(err) {
|
|
134
129
|
debug(err);
|
|
135
|
-
|
|
136
|
-
devLogger.info('on socket error' + err);
|
|
137
|
-
console.error(err);
|
|
138
|
-
const logger = winston_1.loggers.get('main');
|
|
139
|
-
logger.error(typeof err === 'string' ? err : err instanceof Error ? err.message : err);
|
|
130
|
+
use_logger_1.Logger.info("Socket handler error", err);
|
|
140
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* @description Обёртка для ответов. Используется, для ответа на текущее сообщение.
|
|
134
|
+
*/
|
|
141
135
|
function wrapResponse(ws, requestId, defaultEvent) {
|
|
142
136
|
return (response, event) => {
|
|
143
137
|
sendWSResponse(ws, event || defaultEvent, response, requestId);
|
|
144
138
|
};
|
|
145
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* @description Метод предназначен для отправки сообщения в WS.
|
|
142
|
+
*
|
|
143
|
+
* @param {WebSocket} ws websocket connection.
|
|
144
|
+
* @param {String} event Message event name.
|
|
145
|
+
* @param {any} response Payload of message.
|
|
146
|
+
* @param {number} requestId Number of request. If Current message is response, the requestId will be taken from request.
|
|
147
|
+
*/
|
|
146
148
|
function sendWSResponse(ws, event, response, requestId = 0) {
|
|
147
149
|
ws.send(JSON.stringify({
|
|
148
150
|
event,
|
|
@@ -151,4 +153,15 @@ function sendWSResponse(ws, event, response, requestId = 0) {
|
|
|
151
153
|
}));
|
|
152
154
|
}
|
|
153
155
|
exports.sendWSResponse = sendWSResponse;
|
|
156
|
+
/**
|
|
157
|
+
* @description Метод используется для отправки ответа-ошибки пользователя. Является обёрткой над обычным отправителем
|
|
158
|
+
* сообщения с указанным event.
|
|
159
|
+
*/
|
|
160
|
+
function sendWSError(ws, response, requestId = 0) {
|
|
161
|
+
ws.send(JSON.stringify({
|
|
162
|
+
event: SOCKET_EVENT_ERROR,
|
|
163
|
+
data: response,
|
|
164
|
+
requestId
|
|
165
|
+
}));
|
|
166
|
+
}
|
|
154
167
|
//# sourceMappingURL=connect-socket.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-socket.js","sourceRoot":"","sources":["../../src/socket/connect-socket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA,6DAAsD;AACtD,mFAAyD;AACzD,iEAAoD;AACpD,2EAA8D;AAC9D,+DAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"connect-socket.js","sourceRoot":"","sources":["../../src/socket/connect-socket.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eservices-back-core",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.7",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/Server.js",
|
|
6
6
|
"scripts": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"full": "tsc && npm publish",
|
|
12
12
|
"build": "tsc",
|
|
13
13
|
"refreshVSToken": "vsts-npm-auth -config .npmrc -F",
|
|
14
|
-
"dd": "set DEBUG=
|
|
14
|
+
"dd": "set DEBUG=eservices-core* && npm start ",
|
|
15
15
|
"docs:dev": "vitepress dev docs",
|
|
16
16
|
"docs:build": "vitepress build docs",
|
|
17
17
|
"docs:serve": "vitepress serve docs"
|