@flink-app/bankid-plugin 2.0.0-alpha.80 → 2.0.0-alpha.81
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/BankIdPlugin.d.ts +1 -1
- package/dist/BankIdPluginOptions.d.ts +18 -13
- package/dist/functions/getAuthStatus.js +1 -1
- package/dist/functions/getSignStatus.js +1 -1
- package/package.json +3 -3
- package/src/BankIdPlugin.ts +1 -1
- package/src/BankIdPluginOptions.ts +24 -13
- package/src/functions/getAuthStatus.ts +4 -1
- package/src/functions/getSignStatus.ts +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @flink-app/bankid-plugin
|
|
2
2
|
|
|
3
|
+
## 2.0.0-alpha.81
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Pass ctx to onAuthSuccess and onSignSuccess callbacks, matching the OIDC plugin pattern. Callbacks now receive a params object as first argument and the Flink context (TCtx) as second argument. Plugin factory is now generic: `bankIdPlugin<TCtx>()`.
|
|
8
|
+
- @flink-app/flink@2.0.0-alpha.81
|
|
9
|
+
|
|
3
10
|
## 2.0.0-alpha.80
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
package/dist/BankIdPlugin.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { FlinkPlugin } from "@flink-app/flink";
|
|
2
2
|
import { BankIdPluginOptions } from "./BankIdPluginOptions";
|
|
3
|
-
export declare function bankIdPlugin(options: BankIdPluginOptions): FlinkPlugin;
|
|
3
|
+
export declare function bankIdPlugin<TCtx = any>(options: BankIdPluginOptions<TCtx>): FlinkPlugin;
|
|
@@ -14,7 +14,7 @@ export interface AuthSuccessCallbackResponse {
|
|
|
14
14
|
user: any;
|
|
15
15
|
token: string;
|
|
16
16
|
}
|
|
17
|
-
export interface BankIdPluginOptions {
|
|
17
|
+
export interface BankIdPluginOptions<TCtx = any> {
|
|
18
18
|
/**
|
|
19
19
|
* BankID PFX certificate in base64 format
|
|
20
20
|
*/
|
|
@@ -46,22 +46,27 @@ export interface BankIdPluginOptions {
|
|
|
46
46
|
* Callback invoked when BankID auth is successful.
|
|
47
47
|
* Callback must return an object containing user information and
|
|
48
48
|
* token. This will be relayed in the collect response to client.
|
|
49
|
-
*
|
|
50
|
-
* @param ip
|
|
51
|
-
* @param
|
|
52
|
-
* @returns
|
|
49
|
+
*
|
|
50
|
+
* @param params - Auth result data (user, ip, payload)
|
|
51
|
+
* @param ctx - Flink context with access to repos and plugins
|
|
52
|
+
* @returns User object and JWT token
|
|
53
53
|
*/
|
|
54
|
-
onAuthSuccess: (
|
|
54
|
+
onAuthSuccess: (params: {
|
|
55
|
+
user: BankIdUserData;
|
|
56
|
+
ip?: string;
|
|
57
|
+
payload?: Record<string, any>;
|
|
58
|
+
}, ctx: TCtx) => Promise<AuthSuccessCallbackResponse>;
|
|
55
59
|
/**
|
|
56
60
|
* Callback invoked when BankID sign is successful.
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* @param
|
|
60
|
-
* @param signature
|
|
61
|
-
* @param payload
|
|
62
|
-
* @returns
|
|
61
|
+
*
|
|
62
|
+
* @param params - Sign result data (user, signature, payload)
|
|
63
|
+
* @param ctx - Flink context with access to repos and plugins
|
|
63
64
|
*/
|
|
64
|
-
onSignSuccess?: (
|
|
65
|
+
onSignSuccess?: (params: {
|
|
66
|
+
user: BankIdUserData;
|
|
67
|
+
signature: BankIdSignature;
|
|
68
|
+
payload?: Record<string, any>;
|
|
69
|
+
}, ctx: TCtx) => Promise<void>;
|
|
65
70
|
/**
|
|
66
71
|
* For how long to keep sessions in database.
|
|
67
72
|
* This has nothing to do with how long the user is logged in, only
|
|
@@ -60,7 +60,7 @@ function getAuthStatus(ctx, options) {
|
|
|
60
60
|
case 2:
|
|
61
61
|
_c.sent();
|
|
62
62
|
throw (0, flink_1.internalServerError)("Session is completed but user data is missing");
|
|
63
|
-
case 3: return [4 /*yield*/, pluginOptions.onAuthSuccess(session.user, (_a = session.device) === null || _a === void 0 ? void 0 : _a.ipAddress, session.payload)];
|
|
63
|
+
case 3: return [4 /*yield*/, pluginOptions.onAuthSuccess({ user: session.user, ip: (_a = session.device) === null || _a === void 0 ? void 0 : _a.ipAddress, payload: session.payload }, ctx)];
|
|
64
64
|
case 4:
|
|
65
65
|
authCallbackRes = _c.sent();
|
|
66
66
|
return [2 /*return*/, {
|
|
@@ -73,7 +73,7 @@ function getSignStatus(ctx, options) {
|
|
|
73
73
|
throw new Error("Signature data is missing");
|
|
74
74
|
case 5:
|
|
75
75
|
// Invoke host app callback
|
|
76
|
-
return [4 /*yield*/, pluginOptions.onSignSuccess(session.user, session.signature, session.payload)];
|
|
76
|
+
return [4 /*yield*/, pluginOptions.onSignSuccess({ user: session.user, signature: session.signature, payload: session.payload }, ctx)];
|
|
77
77
|
case 6:
|
|
78
78
|
// Invoke host app callback
|
|
79
79
|
_b.sent();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flink-app/bankid-plugin",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.81",
|
|
4
4
|
"description": "Flink plugin for Swedish BankID authentication and document signing",
|
|
5
5
|
"author": "joel@frost.se",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"@types/node": "22.13.10",
|
|
21
21
|
"ts-node": "^10.9.2",
|
|
22
22
|
"tsc-watch": "^4.2.9",
|
|
23
|
-
"@flink-app/flink": "2.0.0-alpha.
|
|
23
|
+
"@flink-app/flink": "2.0.0-alpha.81"
|
|
24
24
|
},
|
|
25
25
|
"gitHead": "4243e3b3cd6d4e1ca001a61baa8436bf2bbe4113",
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@flink-app/flink": ">=2.0.0-alpha.
|
|
27
|
+
"@flink-app/flink": ">=2.0.0-alpha.81"
|
|
28
28
|
},
|
|
29
29
|
"scripts": {
|
|
30
30
|
"test": "jasmine-ts --config=./spec/support/jasmine.json",
|
package/src/BankIdPlugin.ts
CHANGED
|
@@ -13,7 +13,7 @@ import { getAuthStatus } from "./functions/getAuthStatus";
|
|
|
13
13
|
import { getSignStatus } from "./functions/getSignStatus";
|
|
14
14
|
import { cancelSession } from "./functions/cancelSession";
|
|
15
15
|
|
|
16
|
-
export function bankIdPlugin(options: BankIdPluginOptions): FlinkPlugin {
|
|
16
|
+
export function bankIdPlugin<TCtx = any>(options: BankIdPluginOptions<TCtx>): FlinkPlugin {
|
|
17
17
|
if (!options.pfxBase64) {
|
|
18
18
|
throw new Error("BankID Plugin: pfxBase64 is required");
|
|
19
19
|
}
|
|
@@ -18,7 +18,7 @@ export interface AuthSuccessCallbackResponse {
|
|
|
18
18
|
token: string;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
export interface BankIdPluginOptions {
|
|
21
|
+
export interface BankIdPluginOptions<TCtx = any> {
|
|
22
22
|
/**
|
|
23
23
|
* BankID PFX certificate in base64 format
|
|
24
24
|
*/
|
|
@@ -55,23 +55,34 @@ export interface BankIdPluginOptions {
|
|
|
55
55
|
* Callback invoked when BankID auth is successful.
|
|
56
56
|
* Callback must return an object containing user information and
|
|
57
57
|
* token. This will be relayed in the collect response to client.
|
|
58
|
-
*
|
|
59
|
-
* @param ip
|
|
60
|
-
* @param
|
|
61
|
-
* @returns
|
|
58
|
+
*
|
|
59
|
+
* @param params - Auth result data (user, ip, payload)
|
|
60
|
+
* @param ctx - Flink context with access to repos and plugins
|
|
61
|
+
* @returns User object and JWT token
|
|
62
62
|
*/
|
|
63
|
-
onAuthSuccess: (
|
|
63
|
+
onAuthSuccess: (
|
|
64
|
+
params: {
|
|
65
|
+
user: BankIdUserData;
|
|
66
|
+
ip?: string;
|
|
67
|
+
payload?: Record<string, any>;
|
|
68
|
+
},
|
|
69
|
+
ctx: TCtx
|
|
70
|
+
) => Promise<AuthSuccessCallbackResponse>;
|
|
64
71
|
|
|
65
72
|
/**
|
|
66
73
|
* Callback invoked when BankID sign is successful.
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
* @param
|
|
70
|
-
* @param signature
|
|
71
|
-
* @param payload
|
|
72
|
-
* @returns
|
|
74
|
+
*
|
|
75
|
+
* @param params - Sign result data (user, signature, payload)
|
|
76
|
+
* @param ctx - Flink context with access to repos and plugins
|
|
73
77
|
*/
|
|
74
|
-
onSignSuccess?: (
|
|
78
|
+
onSignSuccess?: (
|
|
79
|
+
params: {
|
|
80
|
+
user: BankIdUserData;
|
|
81
|
+
signature: BankIdSignature;
|
|
82
|
+
payload?: Record<string, any>;
|
|
83
|
+
},
|
|
84
|
+
ctx: TCtx
|
|
85
|
+
) => Promise<void>;
|
|
75
86
|
|
|
76
87
|
/**
|
|
77
88
|
* For how long to keep sessions in database.
|
|
@@ -40,7 +40,10 @@ export async function getAuthStatus(ctx: BankIdInternalCtx, options: AuthStatusO
|
|
|
40
40
|
// - Create user if not found
|
|
41
41
|
// - Create access token
|
|
42
42
|
// If host app throws for example notFound error, this will be propagated as response here
|
|
43
|
-
const authCallbackRes = await pluginOptions.onAuthSuccess(
|
|
43
|
+
const authCallbackRes = await pluginOptions.onAuthSuccess(
|
|
44
|
+
{ user: session.user, ip: session.device?.ipAddress, payload: session.payload },
|
|
45
|
+
ctx
|
|
46
|
+
);
|
|
44
47
|
|
|
45
48
|
return {
|
|
46
49
|
status: "complete",
|
|
@@ -48,7 +48,10 @@ export async function getSignStatus(ctx: BankIdInternalCtx, options: SignStatusO
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
// Invoke host app callback
|
|
51
|
-
await pluginOptions.onSignSuccess(
|
|
51
|
+
await pluginOptions.onSignSuccess(
|
|
52
|
+
{ user: session.user, signature: session.signature, payload: session.payload },
|
|
53
|
+
ctx
|
|
54
|
+
);
|
|
52
55
|
|
|
53
56
|
return {
|
|
54
57
|
status: "complete",
|