@villedemontreal/jwt-validator 5.7.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/LICENSE +21 -0
- package/README.md +313 -0
- package/dist/scripts/index.d.ts +6 -0
- package/dist/scripts/index.js +16 -0
- package/dist/scripts/index.js.map +1 -0
- package/dist/scripts/lint.d.ts +6 -0
- package/dist/scripts/lint.js +18 -0
- package/dist/scripts/lint.js.map +1 -0
- package/dist/scripts/lintFix.d.ts +6 -0
- package/dist/scripts/lintFix.js +21 -0
- package/dist/scripts/lintFix.js.map +1 -0
- package/dist/scripts/showCoverage.d.ts +13 -0
- package/dist/scripts/showCoverage.js +40 -0
- package/dist/scripts/showCoverage.js.map +1 -0
- package/dist/scripts/test.d.ts +13 -0
- package/dist/scripts/test.js +29 -0
- package/dist/scripts/test.js.map +1 -0
- package/dist/scripts/testUnits.d.ts +15 -0
- package/dist/scripts/testUnits.js +95 -0
- package/dist/scripts/testUnits.js.map +1 -0
- package/dist/scripts/watch.d.ts +14 -0
- package/dist/scripts/watch.js +96 -0
- package/dist/scripts/watch.js.map +1 -0
- package/dist/src/config/configs.d.ts +88 -0
- package/dist/src/config/configs.js +123 -0
- package/dist/src/config/configs.js.map +1 -0
- package/dist/src/config/constants.d.ts +56 -0
- package/dist/src/config/constants.js +66 -0
- package/dist/src/config/constants.js.map +1 -0
- package/dist/src/config/init.d.ts +15 -0
- package/dist/src/config/init.js +48 -0
- package/dist/src/config/init.js.map +1 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.js +32 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/jwtValidator.d.ts +21 -0
- package/dist/src/jwtValidator.js +129 -0
- package/dist/src/jwtValidator.js.map +1 -0
- package/dist/src/jwtValidator.test.d.ts +1 -0
- package/dist/src/jwtValidator.test.js +500 -0
- package/dist/src/jwtValidator.test.js.map +1 -0
- package/dist/src/middleware/jwtMiddleware.d.ts +7 -0
- package/dist/src/middleware/jwtMiddleware.js +27 -0
- package/dist/src/middleware/jwtMiddleware.js.map +1 -0
- package/dist/src/models/customError.d.ts +11 -0
- package/dist/src/models/customError.js +38 -0
- package/dist/src/models/customError.js.map +1 -0
- package/dist/src/models/expressRequest.d.ts +15 -0
- package/dist/src/models/expressRequest.js +17 -0
- package/dist/src/models/expressRequest.js.map +1 -0
- package/dist/src/models/gluuUserType.d.ts +9 -0
- package/dist/src/models/gluuUserType.js +14 -0
- package/dist/src/models/gluuUserType.js.map +1 -0
- package/dist/src/models/jwtPayload.d.ts +30 -0
- package/dist/src/models/jwtPayload.js +19 -0
- package/dist/src/models/jwtPayload.js.map +1 -0
- package/dist/src/models/pagination.d.ts +16 -0
- package/dist/src/models/pagination.js +16 -0
- package/dist/src/models/pagination.js.map +1 -0
- package/dist/src/models/publicKey.d.ts +29 -0
- package/dist/src/models/publicKey.js +13 -0
- package/dist/src/models/publicKey.js.map +1 -0
- package/dist/src/repositories/cachedPublicKeyRepository.d.ts +53 -0
- package/dist/src/repositories/cachedPublicKeyRepository.js +102 -0
- package/dist/src/repositories/cachedPublicKeyRepository.js.map +1 -0
- package/dist/src/repositories/publicKeyRepository.d.ts +19 -0
- package/dist/src/repositories/publicKeyRepository.js +44 -0
- package/dist/src/repositories/publicKeyRepository.js.map +1 -0
- package/dist/src/userValidator.d.ts +30 -0
- package/dist/src/userValidator.js +35 -0
- package/dist/src/userValidator.js.map +1 -0
- package/dist/src/userValidator.test.d.ts +1 -0
- package/dist/src/userValidator.test.js +251 -0
- package/dist/src/userValidator.test.js.map +1 -0
- package/dist/src/utils/jwtMock.d.ts +31 -0
- package/dist/src/utils/jwtMock.js +221 -0
- package/dist/src/utils/jwtMock.js.map +1 -0
- package/dist/src/utils/logger.d.ts +11 -0
- package/dist/src/utils/logger.js +54 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/testingConfigurations.d.ts +7 -0
- package/dist/src/utils/testingConfigurations.js +16 -0
- package/dist/src/utils/testingConfigurations.js.map +1 -0
- package/package.json +82 -0
- package/src/config/configs.ts +145 -0
- package/src/config/constants.ts +83 -0
- package/src/config/init.ts +58 -0
- package/src/index.ts +15 -0
- package/src/jwtValidator.test.ts +607 -0
- package/src/jwtValidator.ts +162 -0
- package/src/middleware/jwtMiddleware.ts +33 -0
- package/src/models/customError.ts +37 -0
- package/src/models/expressRequest.ts +27 -0
- package/src/models/gluuUserType.ts +9 -0
- package/src/models/jwtPayload.ts +58 -0
- package/src/models/pagination.ts +26 -0
- package/src/models/publicKey.ts +33 -0
- package/src/repositories/cachedPublicKeyRepository.ts +121 -0
- package/src/repositories/publicKeyRepository.ts +75 -0
- package/src/userValidator.test.ts +279 -0
- package/src/userValidator.ts +54 -0
- package/src/utils/jwtMock.ts +243 -0
- package/src/utils/logger.ts +60 -0
- package/src/utils/testingConfigurations.ts +12 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwtValidator.test.js","sourceRoot":"","sources":["../../src/jwtValidator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as express from 'express';
|
|
2
|
+
/**
|
|
3
|
+
* JWT validation Middleware
|
|
4
|
+
*
|
|
5
|
+
* @param {boolean} mandatoryValidation Defines if the JWT is mandatory. Defaults to true.
|
|
6
|
+
*/
|
|
7
|
+
export declare const jwtValidationMiddleware: (mandatoryValidation?: boolean) => (req: express.Request, res: express.Response, next: express.NextFunction) => Promise<void>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jwtValidationMiddleware = void 0;
|
|
4
|
+
const http_header_fields_typed_1 = require("http-header-fields-typed");
|
|
5
|
+
const constants_1 = require("../config/constants");
|
|
6
|
+
const jwtValidator_1 = require("../jwtValidator");
|
|
7
|
+
/**
|
|
8
|
+
* JWT validation Middleware
|
|
9
|
+
*
|
|
10
|
+
* @param {boolean} mandatoryValidation Defines if the JWT is mandatory. Defaults to true.
|
|
11
|
+
*/
|
|
12
|
+
const jwtValidationMiddleware = (mandatoryValidation = true) => {
|
|
13
|
+
return async (req, res, next) => {
|
|
14
|
+
try {
|
|
15
|
+
const authHeader = req.get(http_header_fields_typed_1.default.AUTHORIZATION);
|
|
16
|
+
if (mandatoryValidation || authHeader) {
|
|
17
|
+
req[constants_1.constants.requestExtraVariables.JWT] = await jwtValidator_1.jwtValidator.verifyAuthorizationHeader(authHeader);
|
|
18
|
+
}
|
|
19
|
+
next();
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
next(err);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.jwtValidationMiddleware = jwtValidationMiddleware;
|
|
27
|
+
//# sourceMappingURL=jwtMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwtMiddleware.js","sourceRoot":"","sources":["../../../src/middleware/jwtMiddleware.ts"],"names":[],"mappings":";;;AACA,uEAA6D;AAC7D,mDAAgD;AAChD,kDAA+C;AAE/C;;;;GAIG;AACI,MAAM,uBAAuB,GAE8D,CAChG,mBAAmB,GAAG,IAAI,EAC1B,EAAE;IACF,OAAO,KAAK,EACV,GAAoB,EACpB,GAAqB,EACrB,IAA0B,EACX,EAAE;QACjB,IAAI;YACF,MAAM,UAAU,GAAW,GAAG,CAAC,GAAG,CAAC,kCAAqB,CAAC,aAAa,CAAC,CAAC;YACxE,IAAI,mBAAmB,IAAI,UAAU,EAAE;gBACrC,GAAG,CAAC,qBAAS,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,MAAM,2BAAY,CAAC,yBAAyB,CACrF,UAAU,CACX,CAAC;aACH;YACD,IAAI,EAAE,CAAC;SACR;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,CAAC;SACX;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,uBAAuB,2BAsBlC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IApiError, IApiErrorAndInfo } from '@villedemontreal/general-utils';
|
|
2
|
+
/**
|
|
3
|
+
* Easily creates an "InvalidJWT" error (401). To throw when
|
|
4
|
+
* the user has a bad/expired JWT
|
|
5
|
+
*/
|
|
6
|
+
export declare function createInvalidJwtError(detail: IApiError): IApiErrorAndInfo;
|
|
7
|
+
/**
|
|
8
|
+
* Easily creates an "invalidAuthHedaer" error (401). To throw when
|
|
9
|
+
* the user has a bad authorization header
|
|
10
|
+
*/
|
|
11
|
+
export declare function createInvalidAuthHeaderError(detail: IApiError): IApiErrorAndInfo;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createInvalidAuthHeaderError = exports.createInvalidJwtError = void 0;
|
|
4
|
+
const general_utils_1 = require("@villedemontreal/general-utils");
|
|
5
|
+
const logger_1 = require("@villedemontreal/logger");
|
|
6
|
+
const HttpStatusCodes = require("http-status-codes");
|
|
7
|
+
const constants_1 = require("../config/constants");
|
|
8
|
+
/**
|
|
9
|
+
* Easily creates an "InvalidJWT" error (401). To throw when
|
|
10
|
+
* the user has a bad/expired JWT
|
|
11
|
+
*/
|
|
12
|
+
function createInvalidJwtError(detail) {
|
|
13
|
+
return (0, general_utils_1.createError)(constants_1.constants.errors.codes.INVALID_JWT, 'Invalid JWT')
|
|
14
|
+
.httpStatus(HttpStatusCodes.UNAUTHORIZED)
|
|
15
|
+
.target('Authorization header')
|
|
16
|
+
.publicMessage('Invalid JWT')
|
|
17
|
+
.logLevel(logger_1.LogLevel.ERROR)
|
|
18
|
+
.logStackTrace(false)
|
|
19
|
+
.addDetail(detail)
|
|
20
|
+
.build();
|
|
21
|
+
}
|
|
22
|
+
exports.createInvalidJwtError = createInvalidJwtError;
|
|
23
|
+
/**
|
|
24
|
+
* Easily creates an "invalidAuthHedaer" error (401). To throw when
|
|
25
|
+
* the user has a bad authorization header
|
|
26
|
+
*/
|
|
27
|
+
function createInvalidAuthHeaderError(detail) {
|
|
28
|
+
return (0, general_utils_1.createError)(constants_1.constants.errors.codes.INVALID_AUTHORIZATION_HEADER, 'Invalid Authorization header')
|
|
29
|
+
.httpStatus(HttpStatusCodes.UNAUTHORIZED)
|
|
30
|
+
.target('Authorization header')
|
|
31
|
+
.publicMessage('Invalid Authorization header')
|
|
32
|
+
.logLevel(logger_1.LogLevel.ERROR)
|
|
33
|
+
.logStackTrace(false)
|
|
34
|
+
.addDetail(detail)
|
|
35
|
+
.build();
|
|
36
|
+
}
|
|
37
|
+
exports.createInvalidAuthHeaderError = createInvalidAuthHeaderError;
|
|
38
|
+
//# sourceMappingURL=customError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customError.js","sourceRoot":"","sources":["../../../src/models/customError.ts"],"names":[],"mappings":";;;AAAA,kEAA0F;AAC1F,oDAAmD;AACnD,qDAAqD;AACrD,mDAAgD;AAEhD;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,MAAiB;IACrD,OAAO,IAAA,2BAAW,EAAC,qBAAS,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC;SAClE,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC;SACxC,MAAM,CAAC,sBAAsB,CAAC;SAC9B,aAAa,CAAC,aAAa,CAAC;SAC5B,QAAQ,CAAC,iBAAQ,CAAC,KAAK,CAAC;SACxB,aAAa,CAAC,KAAK,CAAC;SACpB,SAAS,CAAC,MAAM,CAAC;SACjB,KAAK,EAAE,CAAC;AACb,CAAC;AATD,sDASC;AAED;;;GAGG;AACH,SAAgB,4BAA4B,CAAC,MAAiB;IAC5D,OAAO,IAAA,2BAAW,EAChB,qBAAS,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,EACnD,8BAA8B,CAC/B;SACE,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC;SACxC,MAAM,CAAC,sBAAsB,CAAC;SAC9B,aAAa,CAAC,8BAA8B,CAAC;SAC7C,QAAQ,CAAC,iBAAQ,CAAC,KAAK,CAAC;SACxB,aAAa,CAAC,KAAK,CAAC;SACpB,SAAS,CAAC,MAAM,CAAC;SACjB,KAAK,EAAE,CAAC;AACb,CAAC;AAZD,oEAYC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extend Express Request object
|
|
3
|
+
*/
|
|
4
|
+
import * as express from 'express';
|
|
5
|
+
import { IJWTPayload } from '../models/jwtPayload';
|
|
6
|
+
export interface IRequestWithJwt extends express.Request {
|
|
7
|
+
/**
|
|
8
|
+
* The JSON Web Token of the request.
|
|
9
|
+
*/
|
|
10
|
+
jwt: IJWTPayload;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Request with JWT Type Guard
|
|
14
|
+
*/
|
|
15
|
+
export declare const isRequestWithJwt: (obj: any) => obj is IRequestWithJwt;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isRequestWithJwt = void 0;
|
|
4
|
+
const _ = require("lodash");
|
|
5
|
+
const constants_1 = require("../config/constants");
|
|
6
|
+
/**
|
|
7
|
+
* Request with JWT Type Guard
|
|
8
|
+
*/
|
|
9
|
+
const isRequestWithJwt = (obj) => {
|
|
10
|
+
return (obj &&
|
|
11
|
+
_.isObject(obj) &&
|
|
12
|
+
'get' in obj &&
|
|
13
|
+
'headers' in obj &&
|
|
14
|
+
constants_1.constants.requestExtraVariables.JWT in obj);
|
|
15
|
+
};
|
|
16
|
+
exports.isRequestWithJwt = isRequestWithJwt;
|
|
17
|
+
//# sourceMappingURL=expressRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expressRequest.js","sourceRoot":"","sources":["../../../src/models/expressRequest.ts"],"names":[],"mappings":";;;AAIA,4BAA4B;AAC5B,mDAAgD;AAUhD;;GAEG;AACI,MAAM,gBAAgB,GAAG,CAAC,GAAQ,EAA0B,EAAE;IACnE,OAAO,CACL,GAAG;QACH,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QACf,KAAK,IAAI,GAAG;QACZ,SAAS,IAAI,GAAG;QAChB,qBAAS,CAAC,qBAAqB,CAAC,GAAG,IAAI,GAAG,CAC3C,CAAC;AACJ,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GluuUserType = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* The possible values of the "userType", in a JWT.
|
|
6
|
+
* Note that an empty (or non existent) "userType"
|
|
7
|
+
* means it is the JWT of a regular citizen.
|
|
8
|
+
*/
|
|
9
|
+
var GluuUserType;
|
|
10
|
+
(function (GluuUserType) {
|
|
11
|
+
GluuUserType["EMPLOYEE"] = "employee";
|
|
12
|
+
GluuUserType["SERVICE_ACCOUNT"] = "serviceAccount";
|
|
13
|
+
})(GluuUserType = exports.GluuUserType || (exports.GluuUserType = {}));
|
|
14
|
+
//# sourceMappingURL=gluuUserType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gluuUserType.js","sourceRoot":"","sources":["../../../src/models/gluuUserType.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,qCAAqB,CAAA;IACrB,kDAAkC,CAAA;AACpC,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A JWT payload
|
|
3
|
+
*/
|
|
4
|
+
export interface IJWTPayload {
|
|
5
|
+
accessToken: string;
|
|
6
|
+
iss: string;
|
|
7
|
+
exp: number;
|
|
8
|
+
iat: number;
|
|
9
|
+
keyId: number;
|
|
10
|
+
displayName: string;
|
|
11
|
+
aud: string;
|
|
12
|
+
name: string;
|
|
13
|
+
sub: string;
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated Please use mtlIdentityId or userName instead.
|
|
16
|
+
*/
|
|
17
|
+
inum: string;
|
|
18
|
+
userName: string;
|
|
19
|
+
givenName: string;
|
|
20
|
+
familyName: string;
|
|
21
|
+
userType: string;
|
|
22
|
+
email?: string;
|
|
23
|
+
mtlIdentityId?: string;
|
|
24
|
+
employeeNumber?: string;
|
|
25
|
+
customData?: any;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* IJWTPayload Type Guard
|
|
29
|
+
*/
|
|
30
|
+
export declare const isJWTPayload: (obj: any) => obj is IJWTPayload;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isJWTPayload = void 0;
|
|
4
|
+
const _ = require("lodash");
|
|
5
|
+
/**
|
|
6
|
+
* IJWTPayload Type Guard
|
|
7
|
+
*/
|
|
8
|
+
const isJWTPayload = (obj) => {
|
|
9
|
+
return (obj &&
|
|
10
|
+
_.isObject(obj) &&
|
|
11
|
+
'accessToken' in obj &&
|
|
12
|
+
'iss' in obj &&
|
|
13
|
+
'exp' in obj &&
|
|
14
|
+
'iat' in obj &&
|
|
15
|
+
'sub' in obj &&
|
|
16
|
+
'keyId' in obj);
|
|
17
|
+
};
|
|
18
|
+
exports.isJWTPayload = isJWTPayload;
|
|
19
|
+
//# sourceMappingURL=jwtPayload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwtPayload.js","sourceRoot":"","sources":["../../../src/models/jwtPayload.ts"],"names":[],"mappings":";;;AAAA,4BAA4B;AA2C5B;;GAEG;AACI,MAAM,YAAY,GAAG,CAAC,GAAQ,EAAsB,EAAE;IAC3D,OAAO,CACL,GAAG;QACH,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QACf,aAAa,IAAI,GAAG;QACpB,KAAK,IAAI,GAAG;QACZ,KAAK,IAAI,GAAG;QACZ,KAAK,IAAI,GAAG;QACZ,KAAK,IAAI,GAAG;QACZ,OAAO,IAAI,GAAG,CACf,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,YAAY,gBAWvB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents a paginated result set. This follows the doc :
|
|
3
|
+
* https://villemontreal.atlassian.net/wiki/display/AES/REST+API#RESTAPI-Pagination.1
|
|
4
|
+
*/
|
|
5
|
+
export interface IPaginatedResult<T> {
|
|
6
|
+
paging: {
|
|
7
|
+
offset: number;
|
|
8
|
+
limit: number;
|
|
9
|
+
totalCount: number;
|
|
10
|
+
};
|
|
11
|
+
items: T[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* IPaginatedResult Type Guard
|
|
15
|
+
*/
|
|
16
|
+
export declare const isPaginatedResult: (obj: any) => obj is IPaginatedResult<any>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isPaginatedResult = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* IPaginatedResult Type Guard
|
|
6
|
+
*/
|
|
7
|
+
const isPaginatedResult = (obj) => {
|
|
8
|
+
return (obj &&
|
|
9
|
+
'paging' in obj &&
|
|
10
|
+
'offset' in obj.paging &&
|
|
11
|
+
'limit' in obj.paging &&
|
|
12
|
+
'totalCount' in obj.paging &&
|
|
13
|
+
'items' in obj);
|
|
14
|
+
};
|
|
15
|
+
exports.isPaginatedResult = isPaginatedResult;
|
|
16
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../src/models/pagination.ts"],"names":[],"mappings":";;;AAaA;;GAEG;AACI,MAAM,iBAAiB,GAAG,CAAC,GAAQ,EAAgC,EAAE;IAC1E,OAAO,CACL,GAAG;QACH,QAAQ,IAAI,GAAG;QACf,QAAQ,IAAI,GAAG,CAAC,MAAM;QACtB,OAAO,IAAI,GAAG,CAAC,MAAM;QACrB,YAAY,IAAI,GAAG,CAAC,MAAM;QAC1B,OAAO,IAAI,GAAG,CACf,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,iBAAiB,qBAS5B"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The content of public key
|
|
3
|
+
*/
|
|
4
|
+
export interface IPublicKey {
|
|
5
|
+
id: number;
|
|
6
|
+
algorithm: string;
|
|
7
|
+
publicKey: string;
|
|
8
|
+
state: PublicKeyState;
|
|
9
|
+
createdAt?: string;
|
|
10
|
+
expiresAt?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* List of public key with keyId as key
|
|
14
|
+
*/
|
|
15
|
+
export interface IPublicKeys {
|
|
16
|
+
[keyId: number]: IPublicKey;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Array of public key
|
|
20
|
+
*/
|
|
21
|
+
export declare type IPublicKeysList = Array<IPublicKey>;
|
|
22
|
+
/**
|
|
23
|
+
* Public key state
|
|
24
|
+
*/
|
|
25
|
+
export declare enum PublicKeyState {
|
|
26
|
+
ACTIVE = "active",
|
|
27
|
+
EXPIRED = "expired",
|
|
28
|
+
REVOKED = "revoked"
|
|
29
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PublicKeyState = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Public key state
|
|
6
|
+
*/
|
|
7
|
+
var PublicKeyState;
|
|
8
|
+
(function (PublicKeyState) {
|
|
9
|
+
PublicKeyState["ACTIVE"] = "active";
|
|
10
|
+
PublicKeyState["EXPIRED"] = "expired";
|
|
11
|
+
PublicKeyState["REVOKED"] = "revoked";
|
|
12
|
+
})(PublicKeyState = exports.PublicKeyState || (exports.PublicKeyState = {}));
|
|
13
|
+
//# sourceMappingURL=publicKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publicKey.js","sourceRoot":"","sources":["../../../src/models/publicKey.ts"],"names":[],"mappings":";;;AAyBA;;GAEG;AACH,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,mCAAiB,CAAA;IACjB,qCAAmB,CAAA;IACnB,qCAAmB,CAAA;AACrB,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { IPublicKey, IPublicKeys } from '../models/publicKey';
|
|
2
|
+
import { IPublicKeyRepository } from './publicKeyRepository';
|
|
3
|
+
/**
|
|
4
|
+
* Cached Public Key repository
|
|
5
|
+
*/
|
|
6
|
+
export interface ICachedPublicKeyRepository extends IPublicKeyRepository {
|
|
7
|
+
/**
|
|
8
|
+
* Clears the public keys in cache
|
|
9
|
+
*/
|
|
10
|
+
clearCache(): void;
|
|
11
|
+
}
|
|
12
|
+
export declare class CachedPublicKeyRepository implements ICachedPublicKeyRepository {
|
|
13
|
+
/**
|
|
14
|
+
* Next update
|
|
15
|
+
*/
|
|
16
|
+
private _nextUpdate;
|
|
17
|
+
/**
|
|
18
|
+
* Cached public keys
|
|
19
|
+
*/
|
|
20
|
+
private _cachedKeys;
|
|
21
|
+
/**
|
|
22
|
+
* Clears the public keys in cache
|
|
23
|
+
*/
|
|
24
|
+
clearCache(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Return the last public keys
|
|
27
|
+
* @return {Promise<IPublicKeys>}
|
|
28
|
+
*/
|
|
29
|
+
getAll(): Promise<IPublicKeys>;
|
|
30
|
+
/**
|
|
31
|
+
* Return one public key
|
|
32
|
+
* @param {number} keyId
|
|
33
|
+
* @return {Promise<IPublicKey>}
|
|
34
|
+
*/
|
|
35
|
+
getOne(keyId: number): Promise<IPublicKey>;
|
|
36
|
+
/**
|
|
37
|
+
* Check if the error is a network error, server error or
|
|
38
|
+
* If true, do not throw error
|
|
39
|
+
* @return {boolean}
|
|
40
|
+
*/
|
|
41
|
+
private isTransientError;
|
|
42
|
+
/**
|
|
43
|
+
* Check if the cache is stil valid
|
|
44
|
+
* @return {boolean}
|
|
45
|
+
*/
|
|
46
|
+
private isValidCache;
|
|
47
|
+
/**
|
|
48
|
+
* Update the date of the next update
|
|
49
|
+
* @return
|
|
50
|
+
*/
|
|
51
|
+
private updateNextCacheUpdate;
|
|
52
|
+
}
|
|
53
|
+
export declare const cachedPublicKeyRepository: ICachedPublicKeyRepository;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cachedPublicKeyRepository = exports.CachedPublicKeyRepository = void 0;
|
|
4
|
+
const src_1 = require("@villedemontreal/general-utils/dist/src");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
|
+
const moment = require("moment");
|
|
7
|
+
const configs_1 = require("../config/configs");
|
|
8
|
+
const logger_1 = require("../utils/logger");
|
|
9
|
+
const publicKeyRepository_1 = require("./publicKeyRepository");
|
|
10
|
+
const logger = (0, logger_1.createLogger)('CachedPublicKeyRepository');
|
|
11
|
+
class CachedPublicKeyRepository {
|
|
12
|
+
constructor() {
|
|
13
|
+
/**
|
|
14
|
+
* Cached public keys
|
|
15
|
+
*/
|
|
16
|
+
this._cachedKeys = {};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Clears the public keys in cache
|
|
20
|
+
*/
|
|
21
|
+
clearCache() {
|
|
22
|
+
this._cachedKeys = {};
|
|
23
|
+
this._nextUpdate = moment.utc();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Return the last public keys
|
|
27
|
+
* @return {Promise<IPublicKeys>}
|
|
28
|
+
*/
|
|
29
|
+
async getAll() {
|
|
30
|
+
if (!this.isValidCache()) {
|
|
31
|
+
const keysList = await publicKeyRepository_1.publicKeyRepository.getAll();
|
|
32
|
+
if (keysList) {
|
|
33
|
+
this.updateNextCacheUpdate();
|
|
34
|
+
this._cachedKeys = (0, lodash_1.extend)(this._cachedKeys, keysList);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return this._cachedKeys;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Return one public key
|
|
41
|
+
* @param {number} keyId
|
|
42
|
+
* @return {Promise<IPublicKey>}
|
|
43
|
+
*/
|
|
44
|
+
async getOne(keyId) {
|
|
45
|
+
if (!this._cachedKeys[keyId] || !this.isValidCache()) {
|
|
46
|
+
// In case of network error while getting key, return the cached one
|
|
47
|
+
try {
|
|
48
|
+
const key = await publicKeyRepository_1.publicKeyRepository.getOne(keyId);
|
|
49
|
+
if (key) {
|
|
50
|
+
this.updateNextCacheUpdate();
|
|
51
|
+
this._cachedKeys[keyId] = key;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
if (!this._cachedKeys[keyId] || !this.isTransientError(err)) {
|
|
56
|
+
throw err;
|
|
57
|
+
}
|
|
58
|
+
logger.error(JSON.stringify(err), `[getOne] There was an error getting key ${keyId}, cached value was sent as result`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return this._cachedKeys[keyId];
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if the error is a network error, server error or
|
|
65
|
+
* If true, do not throw error
|
|
66
|
+
* @return {boolean}
|
|
67
|
+
*/
|
|
68
|
+
isTransientError(err) {
|
|
69
|
+
if (err instanceof src_1.ApiErrorAndInfo) {
|
|
70
|
+
if (err.httpStatus >= 500 || err.httpStatus === 429)
|
|
71
|
+
return true;
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
// No status on a superagent network error
|
|
75
|
+
if (!err.status)
|
|
76
|
+
return true;
|
|
77
|
+
const errStatus = +err.status;
|
|
78
|
+
if (errStatus >= 500 || errStatus === 429)
|
|
79
|
+
return true;
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if the cache is stil valid
|
|
84
|
+
* @return {boolean}
|
|
85
|
+
*/
|
|
86
|
+
isValidCache() {
|
|
87
|
+
if (!this._nextUpdate || moment.utc().diff(this._nextUpdate) >= 0) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Update the date of the next update
|
|
94
|
+
* @return
|
|
95
|
+
*/
|
|
96
|
+
updateNextCacheUpdate() {
|
|
97
|
+
this._nextUpdate = moment.utc().add(configs_1.configs.getCacheDuration(), 'seconds');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.CachedPublicKeyRepository = CachedPublicKeyRepository;
|
|
101
|
+
exports.cachedPublicKeyRepository = new CachedPublicKeyRepository();
|
|
102
|
+
//# sourceMappingURL=cachedPublicKeyRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cachedPublicKeyRepository.js","sourceRoot":"","sources":["../../../src/repositories/cachedPublicKeyRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IPublicKey, IPublicKeys } from '../models/publicKey';
|
|
2
|
+
/**
|
|
3
|
+
* Public Key repository
|
|
4
|
+
*/
|
|
5
|
+
export interface IPublicKeyRepository {
|
|
6
|
+
/**
|
|
7
|
+
* Return the last public keys
|
|
8
|
+
* @return {Promise<IPublicKeys>}
|
|
9
|
+
*/
|
|
10
|
+
getAll(): Promise<IPublicKeys>;
|
|
11
|
+
/**
|
|
12
|
+
* Returns one public key.
|
|
13
|
+
* Returns null if not found.
|
|
14
|
+
* @param {number} keyId
|
|
15
|
+
* @return {Promise<IPublicKey>}
|
|
16
|
+
*/
|
|
17
|
+
getOne(keyId: number): Promise<IPublicKey>;
|
|
18
|
+
}
|
|
19
|
+
export declare const publicKeyRepository: IPublicKeyRepository;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.publicKeyRepository = void 0;
|
|
4
|
+
const http_request_1 = require("@villedemontreal/http-request");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
|
+
const superagent = require("superagent");
|
|
7
|
+
const general_utils_1 = require("@villedemontreal/general-utils");
|
|
8
|
+
const configs_1 = require("../config/configs");
|
|
9
|
+
const constants_1 = require("../config/constants");
|
|
10
|
+
class PublicKeyRepository {
|
|
11
|
+
async getAll() {
|
|
12
|
+
const url = `${http_request_1.httpUtils.urlJoin(configs_1.configs.getHost(), configs_1.configs.getEndpoint())}?${configs_1.configs.getFetchKeysParameters()}`;
|
|
13
|
+
const request = superagent.get(url);
|
|
14
|
+
const response = await http_request_1.httpUtils.send(request);
|
|
15
|
+
if (!response.ok) {
|
|
16
|
+
throw new Error(`An error occured calling ${url} : ${response.error}`);
|
|
17
|
+
}
|
|
18
|
+
const data = response.body;
|
|
19
|
+
if (data && data.items && (0, lodash_1.isArray)(data.items)) {
|
|
20
|
+
const newKeys = (0, lodash_1.keyBy)(data.items, (item) => item.id);
|
|
21
|
+
return newKeys;
|
|
22
|
+
}
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
async getOne(keyId) {
|
|
26
|
+
const url = http_request_1.httpUtils.urlJoin(configs_1.configs.getHost(), configs_1.configs.getEndpoint(), keyId.toString());
|
|
27
|
+
const request = superagent.get(url);
|
|
28
|
+
const response = await http_request_1.httpUtils.send(request);
|
|
29
|
+
if (!response.ok) {
|
|
30
|
+
// ==========================================
|
|
31
|
+
// Not found: we return null
|
|
32
|
+
// ==========================================
|
|
33
|
+
if (response.status === 404) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
throw (0, general_utils_1.createError)(constants_1.constants.errors.codes.UNABLE_TO_GET_PUBLIC_KEY, `An error occured calling ${url} : ${response.error}`)
|
|
37
|
+
.httpStatus(response.status)
|
|
38
|
+
.build();
|
|
39
|
+
}
|
|
40
|
+
return response.body;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.publicKeyRepository = new PublicKeyRepository();
|
|
44
|
+
//# sourceMappingURL=publicKeyRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publicKeyRepository.js","sourceRoot":"","sources":["../../../src/repositories/publicKeyRepository.ts"],"names":[],"mappings":";;;AAAA,gEAA0D;AAC1D,mCAAwC;AACxC,yCAAyC;AAEzC,kEAA6D;AAC7D,+CAA4C;AAC5C,mDAAgD;AAuBhD,MAAM,mBAAmB;IAChB,KAAK,CAAC,MAAM;QACjB,MAAM,GAAG,GAAG,GAAG,wBAAS,CAAC,OAAO,CAC9B,iBAAO,CAAC,OAAO,EAAE,EACjB,iBAAO,CAAC,WAAW,EAAE,CACtB,IAAI,iBAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,wBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;SACxE;QAED,MAAM,IAAI,GAAiC,QAAQ,CAAC,IAAI,CAAC;QACzD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7C,MAAM,OAAO,GAAgB,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClE,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAa;QAC/B,MAAM,GAAG,GAAG,wBAAS,CAAC,OAAO,CAAC,iBAAO,CAAC,OAAO,EAAE,EAAE,iBAAO,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1F,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpC,MAAM,QAAQ,GAAG,MAAM,wBAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,6CAA6C;YAC7C,4BAA4B;YAC5B,6CAA6C;YAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;gBAC3B,OAAO,IAAI,CAAC;aACb;YAED,MAAM,IAAA,2BAAW,EACf,qBAAS,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAC/C,4BAA4B,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CACtD;iBACE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;iBAC3B,KAAK,EAAE,CAAC;SACZ;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;CACF;AAEY,QAAA,mBAAmB,GAAyB,IAAI,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as express from 'express';
|
|
2
|
+
export interface IUserValidator {
|
|
3
|
+
/**
|
|
4
|
+
* TODO commentaire pas à jour
|
|
5
|
+
* Verify a header containg a jwt and check the jwt with the public key and returns the decoded payload
|
|
6
|
+
* @param {string} userId
|
|
7
|
+
* @return {void}
|
|
8
|
+
*/
|
|
9
|
+
isUser(userId: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* TODO commentaire pas à jour
|
|
12
|
+
* Verify a header containg a jwt and check the jwt with the public key and returns the decoded payload
|
|
13
|
+
* @param {string} userId
|
|
14
|
+
* @return {void}
|
|
15
|
+
*/
|
|
16
|
+
verifyUser(userId: string): void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* User Validator
|
|
20
|
+
*/
|
|
21
|
+
export declare class UserValidator implements IUserValidator {
|
|
22
|
+
private _request;
|
|
23
|
+
/**
|
|
24
|
+
* Create a new instance of UserValidator
|
|
25
|
+
* @param {express.Request} req
|
|
26
|
+
*/
|
|
27
|
+
constructor(req: express.Request);
|
|
28
|
+
isUser(userId: string): boolean;
|
|
29
|
+
verifyUser(userId: string): void;
|
|
30
|
+
}
|