@alanszp/express 16.0.2 → 16.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.parseCookie = void 0;
|
|
13
14
|
__exportStar(require("./types/AuthMethod"), exports);
|
|
14
15
|
__exportStar(require("./types/docs/examples"), exports);
|
|
15
16
|
__exportStar(require("./middlewares/auditLog"), exports);
|
|
@@ -25,4 +26,6 @@ __exportStar(require("./middlewares/hasPermissions"), exports);
|
|
|
25
26
|
__exportStar(require("./helpers/getRequestBaseLog"), exports);
|
|
26
27
|
__exportStar(require("./endpoints/BaseApi"), exports);
|
|
27
28
|
__exportStar(require("./errors/AuthMethodFailureError"), exports);
|
|
29
|
+
var cookie_1 = require("cookie");
|
|
30
|
+
Object.defineProperty(exports, "parseCookie", { enumerable: true, get: function () { return cookie_1.parse; } });
|
|
28
31
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qDAAmC;AACnC,wDAAsC;AACtC,yDAAuC;AACvC,6DAA2C;AAC3C,6DAA2C;AAC3C,8DAA4C;AAC5C,iEAA+C;AAC/C,8EAA4D;AAC5D,+DAA6C;AAC7C,+DAA6C;AAC7C,yDAAuC;AACvC,+DAA6C;AAC7C,8DAA4C;AAC5C,sDAAoC;AACpC,kEAAgD;AAChD,iCAA8C;AAArC,qGAAA,KAAK,OAAe"}
|
|
@@ -5,12 +5,18 @@ export declare enum AuthMethods {
|
|
|
5
5
|
JWT = "JWT",
|
|
6
6
|
API_KEY = "API_KEY"
|
|
7
7
|
}
|
|
8
|
+
export declare enum JwtCookiesKeys {
|
|
9
|
+
USER_ACCESS = "jwt",
|
|
10
|
+
IMPERSONATED_ACCESS = "impersonatedJwt",
|
|
11
|
+
PARTIAL_LOGIN_ACCESS = "partialAccessJwt"
|
|
12
|
+
}
|
|
8
13
|
export interface JWTVerifyOptions extends Partial<VerifyOptions> {
|
|
9
14
|
publicKey: string;
|
|
10
15
|
}
|
|
11
16
|
export interface JWTOptions {
|
|
12
17
|
jwtVerifyOptions: JWTVerifyOptions;
|
|
13
18
|
types: [AuthMethods.JWT];
|
|
19
|
+
cookiesKeys?: string[];
|
|
14
20
|
}
|
|
15
21
|
export interface ApiKeyOptions {
|
|
16
22
|
validApiKeys: string[];
|
|
@@ -18,6 +24,7 @@ export interface ApiKeyOptions {
|
|
|
18
24
|
}
|
|
19
25
|
export interface BothMethodsOptions {
|
|
20
26
|
jwtVerifyOptions: JWTVerifyOptions;
|
|
27
|
+
cookiesKeys?: string[];
|
|
21
28
|
validApiKeys: string[];
|
|
22
29
|
types: [AuthMethods.JWT, AuthMethods.API_KEY] | [AuthMethods.API_KEY, AuthMethods.JWT];
|
|
23
30
|
}
|
|
@@ -9,8 +9,9 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.tsoaAuthProvider = exports.createAuthContext = exports.AuthMethods = void 0;
|
|
12
|
+
exports.tsoaAuthProvider = exports.createAuthContext = exports.JwtCookiesKeys = exports.AuthMethods = void 0;
|
|
13
13
|
const jwt_1 = require("@alanszp/jwt");
|
|
14
|
+
const cookie_1 = require("cookie");
|
|
14
15
|
const getRequestLogger_1 = require("../helpers/getRequestLogger");
|
|
15
16
|
const lodash_1 = require("lodash");
|
|
16
17
|
const AuthMethodFailureError_1 = require("../errors/AuthMethodFailureError");
|
|
@@ -28,9 +29,23 @@ var AuthMethods;
|
|
|
28
29
|
AuthMethods["JWT"] = "JWT";
|
|
29
30
|
AuthMethods["API_KEY"] = "API_KEY";
|
|
30
31
|
})(AuthMethods = exports.AuthMethods || (exports.AuthMethods = {}));
|
|
32
|
+
var JwtCookiesKeys;
|
|
33
|
+
(function (JwtCookiesKeys) {
|
|
34
|
+
JwtCookiesKeys["USER_ACCESS"] = "jwt";
|
|
35
|
+
JwtCookiesKeys["IMPERSONATED_ACCESS"] = "impersonatedJwt";
|
|
36
|
+
JwtCookiesKeys["PARTIAL_LOGIN_ACCESS"] = "partialAccessJwt";
|
|
37
|
+
})(JwtCookiesKeys = exports.JwtCookiesKeys || (exports.JwtCookiesKeys = {}));
|
|
31
38
|
const middlewareGetterByAuthType = {
|
|
32
|
-
[AuthMethods.JWT]: (
|
|
39
|
+
[AuthMethods.JWT]: (req, options, logger) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
+
var _a, _b;
|
|
33
41
|
try {
|
|
42
|
+
const cookiesKeys = options.cookiesKeys || [
|
|
43
|
+
JwtCookiesKeys.IMPERSONATED_ACCESS,
|
|
44
|
+
JwtCookiesKeys.USER_ACCESS,
|
|
45
|
+
];
|
|
46
|
+
const cookies = (0, cookie_1.parse)((_b = (_a = req.headers) === null || _a === void 0 ? void 0 : _a.cookie) !== null && _b !== void 0 ? _b : "");
|
|
47
|
+
const jwtFromCookies = (0, lodash_1.reduce)(cookiesKeys, (acc, key) => acc !== null && acc !== void 0 ? acc : cookies[key], null);
|
|
48
|
+
const jwt = jwtFromCookies !== null && jwtFromCookies !== void 0 ? jwtFromCookies : parseAuthorizationHeader(req.headers.authorization);
|
|
34
49
|
if (!jwt)
|
|
35
50
|
return undefined;
|
|
36
51
|
const jwtUser = yield (0, jwt_1.verifyJWT)(options.jwtVerifyOptions.publicKey, jwt, (0, lodash_1.omit)(options.jwtVerifyOptions, "publicKey"));
|
|
@@ -45,7 +60,9 @@ const middlewareGetterByAuthType = {
|
|
|
45
60
|
return null;
|
|
46
61
|
}
|
|
47
62
|
}),
|
|
48
|
-
[AuthMethods.API_KEY]: (
|
|
63
|
+
[AuthMethods.API_KEY]: (req, options, logger) => __awaiter(void 0, void 0, void 0, function* () {
|
|
64
|
+
var _c;
|
|
65
|
+
const token = (_c = req.headers) === null || _c === void 0 ? void 0 : _c.authorization;
|
|
49
66
|
try {
|
|
50
67
|
if (!token)
|
|
51
68
|
return undefined;
|
|
@@ -105,10 +122,8 @@ exports.createAuthContext = createAuthContext;
|
|
|
105
122
|
function tsoaAuthProvider(req, options, authMethods) {
|
|
106
123
|
return __awaiter(this, void 0, void 0, function* () {
|
|
107
124
|
const logger = (0, getRequestLogger_1.getRequestLogger)(req);
|
|
108
|
-
const cookies = req.cookies || {};
|
|
109
|
-
const jwt = cookies.jwt || parseAuthorizationHeader(req.headers.authorization);
|
|
110
125
|
try {
|
|
111
|
-
const authAttempts = yield Promise.all(authMethods.map((method) => middlewareGetterByAuthType[method](
|
|
126
|
+
const authAttempts = yield Promise.all(authMethods.map((method) => middlewareGetterByAuthType[method](req, options, logger)));
|
|
112
127
|
const successfulAuthAttempts = (0, lodash_1.compact)(authAttempts);
|
|
113
128
|
if ((0, lodash_1.isEmpty)(successfulAuthAttempts)) {
|
|
114
129
|
throw new AuthMethodFailureError_1.AuthenticationMethodError([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authenticateUser.js","sourceRoot":"","sources":["../../src/middlewares/authenticateUser.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAAiE;AAEjE,kEAA+D;AAG/D,
|
|
1
|
+
{"version":3,"file":"authenticateUser.js","sourceRoot":"","sources":["../../src/middlewares/authenticateUser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alanszp/express",
|
|
3
|
-
"version": "16.0
|
|
3
|
+
"version": "16.1.0",
|
|
4
4
|
"description": "Alan's express utils and middlewares.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
26
|
"@types/body-parser": "^1.19.1",
|
|
27
|
+
"@types/cookie": "^0.6.0",
|
|
27
28
|
"@types/express": "^4.17.12",
|
|
28
29
|
"@types/jest": "^28.1.8",
|
|
29
30
|
"@types/joi": "^17.2.3",
|
|
@@ -40,14 +41,15 @@
|
|
|
40
41
|
},
|
|
41
42
|
"dependencies": {
|
|
42
43
|
"@alanszp/audit": "^16.0.0",
|
|
43
|
-
"@alanszp/jwt": "^16.0.
|
|
44
|
+
"@alanszp/jwt": "^16.0.3",
|
|
44
45
|
"@alanszp/logger": "^16.0.0",
|
|
45
46
|
"@alanszp/shared-context": "^16.0.0",
|
|
46
47
|
"@babel/core": "^7.23.9",
|
|
47
48
|
"@paralleldrive/cuid2": "^2.2.2",
|
|
48
49
|
"body-parser": "^1.20.2",
|
|
50
|
+
"cookie": "^0.6.0",
|
|
49
51
|
"lodash": "^4.17.21",
|
|
50
52
|
"newrelic": "^11.18.0"
|
|
51
53
|
},
|
|
52
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "cd86ae56bb685535742f2c52186f3fd21e77614c"
|
|
53
55
|
}
|