@alanszp/express 16.0.3 → 16.1.1
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,24 @@ 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 || cookies[key], // cookie if empty it may be ""
|
|
48
|
+
null);
|
|
49
|
+
const jwt = jwtFromCookies || parseAuthorizationHeader(req.headers.authorization);
|
|
34
50
|
if (!jwt)
|
|
35
51
|
return undefined;
|
|
36
52
|
const jwtUser = yield (0, jwt_1.verifyJWT)(options.jwtVerifyOptions.publicKey, jwt, (0, lodash_1.omit)(options.jwtVerifyOptions, "publicKey"));
|
|
@@ -45,7 +61,9 @@ const middlewareGetterByAuthType = {
|
|
|
45
61
|
return null;
|
|
46
62
|
}
|
|
47
63
|
}),
|
|
48
|
-
[AuthMethods.API_KEY]: (
|
|
64
|
+
[AuthMethods.API_KEY]: (req, options, logger) => __awaiter(void 0, void 0, void 0, function* () {
|
|
65
|
+
var _c;
|
|
66
|
+
const token = (_c = req.headers) === null || _c === void 0 ? void 0 : _c.authorization;
|
|
49
67
|
try {
|
|
50
68
|
if (!token)
|
|
51
69
|
return undefined;
|
|
@@ -105,10 +123,8 @@ exports.createAuthContext = createAuthContext;
|
|
|
105
123
|
function tsoaAuthProvider(req, options, authMethods) {
|
|
106
124
|
return __awaiter(this, void 0, void 0, function* () {
|
|
107
125
|
const logger = (0, getRequestLogger_1.getRequestLogger)(req);
|
|
108
|
-
const cookies = req.cookies || {};
|
|
109
|
-
const jwt = cookies.jwt || parseAuthorizationHeader(req.headers.authorization);
|
|
110
126
|
try {
|
|
111
|
-
const authAttempts = yield Promise.all(authMethods.map((method) => middlewareGetterByAuthType[method](
|
|
127
|
+
const authAttempts = yield Promise.all(authMethods.map((method) => middlewareGetterByAuthType[method](req, options, logger)));
|
|
112
128
|
const successfulAuthAttempts = (0, lodash_1.compact)(authAttempts);
|
|
113
129
|
if ((0, lodash_1.isEmpty)(successfulAuthAttempts)) {
|
|
114
130
|
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.
|
|
3
|
+
"version": "16.1.1",
|
|
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",
|
|
@@ -46,8 +47,9 @@
|
|
|
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": "380505f7ed910ee823bc39f7c57b130ef6843a91"
|
|
53
55
|
}
|