@flink-app/oauth-plugin 0.12.1-alpha.47 → 0.13.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/CHANGELOG.md +7 -0
- package/dist/OAuthPlugin.js +4 -5
- package/dist/providers/ProviderRegistry.js +1 -2
- package/dist/utils/encryption-utils.js +3 -4
- package/dist/utils/error-utils.js +5 -5
- package/dist/utils/state-utils.js +3 -4
- package/dist/utils/token-response-utils.js +1 -2
- package/package.json +33 -37
- package/src/OAuthPlugin.ts +6 -6
- package/tsconfig.json +1 -1
package/CHANGELOG.md
ADDED
package/dist/OAuthPlugin.js
CHANGED
|
@@ -26,13 +26,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.oauthPlugin =
|
|
29
|
+
exports.oauthPlugin = oauthPlugin;
|
|
30
30
|
const flink_1 = require("@flink-app/flink");
|
|
31
|
-
const
|
|
31
|
+
const CallbackOAuth = __importStar(require("./handlers/CallbackOAuth"));
|
|
32
|
+
const InitiateOAuth = __importStar(require("./handlers/InitiateOAuth"));
|
|
32
33
|
const OAuthConnectionRepo_1 = __importDefault(require("./repos/OAuthConnectionRepo"));
|
|
34
|
+
const OAuthSessionRepo_1 = __importDefault(require("./repos/OAuthSessionRepo"));
|
|
33
35
|
const encryption_utils_1 = require("./utils/encryption-utils");
|
|
34
|
-
const InitiateOAuth = __importStar(require("./handlers/InitiateOAuth"));
|
|
35
|
-
const CallbackOAuth = __importStar(require("./handlers/CallbackOAuth"));
|
|
36
36
|
/**
|
|
37
37
|
* OAuth Plugin Factory Function
|
|
38
38
|
*
|
|
@@ -244,4 +244,3 @@ function oauthPlugin(options) {
|
|
|
244
244
|
init,
|
|
245
245
|
};
|
|
246
246
|
}
|
|
247
|
-
exports.oauthPlugin = oauthPlugin;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProvider =
|
|
3
|
+
exports.getProvider = getProvider;
|
|
4
4
|
const GitHubProvider_1 = require("./GitHubProvider");
|
|
5
5
|
const GoogleProvider_1 = require("./GoogleProvider");
|
|
6
6
|
/**
|
|
@@ -21,4 +21,3 @@ function getProvider(providerName, config) {
|
|
|
21
21
|
throw new Error(`Unsupported OAuth provider: ${providerName}`);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
|
-
exports.getProvider = getProvider;
|
|
@@ -9,7 +9,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
9
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.encryptToken = encryptToken;
|
|
13
|
+
exports.decryptToken = decryptToken;
|
|
14
|
+
exports.validateEncryptionSecret = validateEncryptionSecret;
|
|
13
15
|
const crypto_1 = __importDefault(require("crypto"));
|
|
14
16
|
/**
|
|
15
17
|
* Encryption algorithm configuration
|
|
@@ -70,7 +72,6 @@ function encryptToken(token, secret) {
|
|
|
70
72
|
throw new Error("Token encryption failed: " + (error instanceof Error ? error.message : "Unknown error"));
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
|
-
exports.encryptToken = encryptToken;
|
|
74
75
|
/**
|
|
75
76
|
* Decrypt a token using AES-256-GCM
|
|
76
77
|
*
|
|
@@ -114,7 +115,6 @@ function decryptToken(encryptedToken, secret) {
|
|
|
114
115
|
throw new Error("Token decryption failed: " + (error instanceof Error ? error.message : "Unknown error"));
|
|
115
116
|
}
|
|
116
117
|
}
|
|
117
|
-
exports.decryptToken = decryptToken;
|
|
118
118
|
/**
|
|
119
119
|
* Validate that encryption secret meets security requirements
|
|
120
120
|
*
|
|
@@ -131,4 +131,3 @@ function validateEncryptionSecret(secret) {
|
|
|
131
131
|
}
|
|
132
132
|
return true;
|
|
133
133
|
}
|
|
134
|
-
exports.validateEncryptionSecret = validateEncryptionSecret;
|
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
* user-friendly messages and error code mapping.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.
|
|
9
|
+
exports.OAuthErrorCodes = void 0;
|
|
10
|
+
exports.createOAuthError = createOAuthError;
|
|
11
|
+
exports.handleProviderError = handleProviderError;
|
|
12
|
+
exports.validateProvider = validateProvider;
|
|
13
|
+
exports.validateResponseType = validateResponseType;
|
|
10
14
|
/**
|
|
11
15
|
* OAuth error codes
|
|
12
16
|
*/
|
|
@@ -38,7 +42,6 @@ function createOAuthError(code, message, details) {
|
|
|
38
42
|
details,
|
|
39
43
|
};
|
|
40
44
|
}
|
|
41
|
-
exports.createOAuthError = createOAuthError;
|
|
42
45
|
/**
|
|
43
46
|
* Map provider-specific errors to standardized OAuth errors
|
|
44
47
|
*
|
|
@@ -89,7 +92,6 @@ function handleProviderError(error) {
|
|
|
89
92
|
originalError: error.message || "Unknown error",
|
|
90
93
|
});
|
|
91
94
|
}
|
|
92
|
-
exports.handleProviderError = handleProviderError;
|
|
93
95
|
/**
|
|
94
96
|
* Validate provider name
|
|
95
97
|
*
|
|
@@ -103,7 +105,6 @@ function validateProvider(provider) {
|
|
|
103
105
|
}
|
|
104
106
|
return true;
|
|
105
107
|
}
|
|
106
|
-
exports.validateProvider = validateProvider;
|
|
107
108
|
/**
|
|
108
109
|
* Validate response_type parameter
|
|
109
110
|
*
|
|
@@ -117,4 +118,3 @@ function validateResponseType(responseType) {
|
|
|
117
118
|
}
|
|
118
119
|
return true;
|
|
119
120
|
}
|
|
120
|
-
exports.validateResponseType = validateResponseType;
|
|
@@ -9,7 +9,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
9
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.generateState = generateState;
|
|
13
|
+
exports.validateState = validateState;
|
|
14
|
+
exports.generateSessionId = generateSessionId;
|
|
13
15
|
const crypto_1 = __importDefault(require("crypto"));
|
|
14
16
|
/**
|
|
15
17
|
* Generate a cryptographically secure state parameter
|
|
@@ -23,7 +25,6 @@ const crypto_1 = __importDefault(require("crypto"));
|
|
|
23
25
|
function generateState() {
|
|
24
26
|
return crypto_1.default.randomBytes(32).toString("hex");
|
|
25
27
|
}
|
|
26
|
-
exports.generateState = generateState;
|
|
27
28
|
/**
|
|
28
29
|
* Validate state parameter using constant-time comparison
|
|
29
30
|
*
|
|
@@ -57,7 +58,6 @@ function validateState(provided, stored) {
|
|
|
57
58
|
return false;
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
|
-
exports.validateState = validateState;
|
|
61
61
|
/**
|
|
62
62
|
* Generate a session ID for OAuth flow tracking
|
|
63
63
|
*
|
|
@@ -69,4 +69,3 @@ exports.validateState = validateState;
|
|
|
69
69
|
function generateSessionId() {
|
|
70
70
|
return crypto_1.default.randomBytes(16).toString("hex");
|
|
71
71
|
}
|
|
72
|
-
exports.generateSessionId = generateSessionId;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.formatTokenResponse =
|
|
3
|
+
exports.formatTokenResponse = formatTokenResponse;
|
|
4
4
|
/**
|
|
5
5
|
* Formats the OAuth callback response with JWT token.
|
|
6
6
|
* Supports multiple response formats:
|
|
@@ -47,4 +47,3 @@ function formatTokenResponse(token, user, redirectUrl, responseType) {
|
|
|
47
47
|
},
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
-
exports.formatTokenResponse = formatTokenResponse;
|
package/package.json
CHANGED
|
@@ -1,38 +1,34 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"typescript": "5.4.5"
|
|
36
|
-
},
|
|
37
|
-
"gitHead": "a98a0af7f11e4a97f68da4d0d67677df7d2a2749"
|
|
38
|
-
}
|
|
2
|
+
"name": "@flink-app/oauth-plugin",
|
|
3
|
+
"version": "0.13.0",
|
|
4
|
+
"description": "Flink plugin for OAuth 2.0 authentication with GitHub and Google providers",
|
|
5
|
+
"author": "joel@frost.se",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"main": "dist/index.js",
|
|
9
|
+
"publishConfig": {
|
|
10
|
+
"access": "public"
|
|
11
|
+
},
|
|
12
|
+
"peerDependencies": {
|
|
13
|
+
"mongodb": "^6.15.0"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@types/jasmine": "^3.7.1",
|
|
17
|
+
"@types/jwt-simple": "^0.5.36",
|
|
18
|
+
"@types/node": "22.13.10",
|
|
19
|
+
"jwt-simple": "^0.5.6",
|
|
20
|
+
"ts-node": "^10.9.2",
|
|
21
|
+
"tsc-watch": "^4.2.9",
|
|
22
|
+
"@flink-app/flink": "0.13.0",
|
|
23
|
+
"@flink-app/jwt-auth-plugin": "0.13.0",
|
|
24
|
+
"@flink-app/test-utils": "0.13.0"
|
|
25
|
+
},
|
|
26
|
+
"gitHead": "4243e3b3cd6d4e1ca001a61baa8436bf2bbe4113",
|
|
27
|
+
"scripts": {
|
|
28
|
+
"test": "jasmine-ts --config=./spec/support/jasmine.json",
|
|
29
|
+
"test:watch": "nodemon --ext ts --exec 'jasmine-ts --config=./spec/support/jasmine.json'",
|
|
30
|
+
"build": "tsc --project tsconfig.dist.json",
|
|
31
|
+
"watch": "tsc-watch --project tsconfig.dist.json",
|
|
32
|
+
"clean": "rimraf dist .flink"
|
|
33
|
+
}
|
|
34
|
+
}
|
package/src/OAuthPlugin.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { FlinkApp, FlinkPlugin, log } from "@flink-app/flink";
|
|
2
2
|
import { Db } from "mongodb";
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import * as CallbackOAuth from "./handlers/CallbackOAuth";
|
|
4
|
+
import * as InitiateOAuth from "./handlers/InitiateOAuth";
|
|
5
5
|
import { OAuthInternalContext } from "./OAuthInternalContext";
|
|
6
|
-
import
|
|
6
|
+
import { OAuthPluginContext } from "./OAuthPluginContext";
|
|
7
|
+
import { OAuthPluginOptions } from "./OAuthPluginOptions";
|
|
7
8
|
import OAuthConnectionRepo from "./repos/OAuthConnectionRepo";
|
|
8
|
-
import
|
|
9
|
+
import OAuthSessionRepo from "./repos/OAuthSessionRepo";
|
|
9
10
|
import OAuthConnection from "./schemas/OAuthConnection";
|
|
10
|
-
import
|
|
11
|
-
import * as CallbackOAuth from "./handlers/CallbackOAuth";
|
|
11
|
+
import { decryptToken, validateEncryptionSecret } from "./utils/encryption-utils";
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* OAuth Plugin Factory Function
|