@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 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
@@ -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
- * @param userData
50
- * @param ip
51
- * @param payload
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: (userData: BankIdUserData, ip?: string, payload?: Record<string, any>) => Promise<AuthSuccessCallbackResponse>;
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
- * Callback must return an object containing user information and
58
- * signature data. This will be relayed in the collect response to client.
59
- * @param userData
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?: (userData: BankIdUserData, signature: BankIdSignature, payload?: Record<string, any>) => Promise<void>;
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.80",
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.80"
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.80"
27
+ "@flink-app/flink": ">=2.0.0-alpha.81"
28
28
  },
29
29
  "scripts": {
30
30
  "test": "jasmine-ts --config=./spec/support/jasmine.json",
@@ -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
- * @param userData
59
- * @param ip
60
- * @param payload
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: (userData: BankIdUserData, ip?: string, payload?: Record<string, any>) => Promise<AuthSuccessCallbackResponse>;
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
- * Callback must return an object containing user information and
68
- * signature data. This will be relayed in the collect response to client.
69
- * @param userData
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?: (userData: BankIdUserData, signature: BankIdSignature, payload?: Record<string, any>) => Promise<void>;
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(session.user, session.device?.ipAddress, session.payload);
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(session.user, session.signature, session.payload);
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",