@flowselections/twinfield-authenticatie-module-15-06-2026 1.3.9 → 1.3.11
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-lib/components/TwinfieldKoppelingPage.d.ts +2 -0
- package/dist-lib/components/TwinfieldKoppelingPage.d.ts.map +1 -0
- package/dist-lib/components/TwinfieldKoppelingPage.js +5 -0
- package/dist-lib/index.d.ts +1 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +1 -0
- package/dist-lib/lib/central/central-accounts.server.d.ts.map +1 -1
- package/dist-lib/lib/central/central-accounts.server.js +5 -1
- package/dist-lib/lib/central/return-url.server.d.ts +5 -0
- package/dist-lib/lib/central/return-url.server.d.ts.map +1 -1
- package/dist-lib/lib/central/return-url.server.js +18 -1
- package/dist-lib/lib/twinfield.functions.d.ts.map +1 -1
- package/dist-lib/lib/twinfield.functions.js +5 -10
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TwinfieldKoppelingPage.d.ts","sourceRoot":"","sources":["../../src/components/TwinfieldKoppelingPage.tsx"],"names":[],"mappings":"AAEA,wBAAgB,sBAAsB,gCAMrC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { TwinfieldAuthSettingsCard } from "./settings/TwinfieldAuthSettingsCard";
|
|
3
|
+
export function TwinfieldKoppelingPage() {
|
|
4
|
+
return (_jsx("div", { className: "p-6 max-w-4xl mx-auto", children: _jsx(TwinfieldAuthSettingsCard, { defaultExpanded: true }) }));
|
|
5
|
+
}
|
package/dist-lib/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from './_core-safelist';
|
|
|
3
3
|
export * from './components/TemplatePage';
|
|
4
4
|
export * from './components/TemplateModulePage';
|
|
5
5
|
export { TemplateModuleLogo } from './components/TemplateModuleLogo';
|
|
6
|
+
export { TwinfieldKoppelingPage } from './components/TwinfieldKoppelingPage';
|
|
6
7
|
export { TemplateModulePage } from "./components/TemplateModulePage";
|
|
7
8
|
export { downloadTwinfieldInvoicePdf, downloadTwinfieldInvoicePdfsBulk, resendTwinfieldInvoice, sendPaymentReminder, duplicateTwinfieldInvoice, } from "./lib/accounting/twinfield/actions.functions";
|
|
8
9
|
export { getTwinfieldConformance } from "./lib/accounting/twinfield/conformance.functions";
|
package/dist-lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAKrE,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,EAChC,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAE1F,eAAO,MAAM,4BAA4B,EAAE,UAY1C,CAAC;AAEF,eAAO,MAAM,QAAQ,YAA+B,CAAC;AACrD,eAAO,MAAM,4BAA4B,YAA+B,CAAC"}
|
package/dist-lib/index.js
CHANGED
|
@@ -18,6 +18,7 @@ export * from './_core-safelist';
|
|
|
18
18
|
export * from './components/TemplatePage';
|
|
19
19
|
export * from './components/TemplateModulePage';
|
|
20
20
|
export { TemplateModuleLogo } from './components/TemplateModuleLogo';
|
|
21
|
+
export { TwinfieldKoppelingPage } from './components/TwinfieldKoppelingPage';
|
|
21
22
|
export { TemplateModulePage } from "./components/TemplateModulePage";
|
|
22
23
|
import { TwinfieldAuthSettingsCard } from "./components/settings/TwinfieldAuthSettingsCard";
|
|
23
24
|
// Twinfield acties-server-fns — geëxporteerd voor de facturatie-module.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"central-accounts.server.d.ts","sourceRoot":"","sources":["../../../src/lib/central/central-accounts.server.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAoED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAiB/D;AAGD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"central-accounts.server.d.ts","sourceRoot":"","sources":["../../../src/lib/central/central-accounts.server.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAoED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAiB/D;AAGD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAoE1B;AAGD;;GAEG;AACH,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAkCjF;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBxF"}
|
|
@@ -101,7 +101,7 @@ export function assertTwinfieldAuthorizeUrl(value) {
|
|
|
101
101
|
export async function startTwinfieldAuthorize(returnUrl) {
|
|
102
102
|
const returnDetails = describeReturnUrl(returnUrl);
|
|
103
103
|
if (!returnDetails.valid || !returnUrl.startsWith("https://")) {
|
|
104
|
-
throw new Error(`Ongeldige return_url voor Central Auth (${returnUrl}). Verwacht een absolute https-URL naar de
|
|
104
|
+
throw new Error(`Ongeldige return_url voor Central Auth (${returnUrl}). Verwacht een absolute https-URL naar de module, bijv. https://mijn-shell.nl/twinfield-authenticatie.`);
|
|
105
105
|
}
|
|
106
106
|
const { baseUrl, secret } = getCentralConfig();
|
|
107
107
|
const endpoint = `${baseUrl}/api/authorize/twinfield`;
|
|
@@ -118,6 +118,10 @@ export async function startTwinfieldAuthorize(returnUrl) {
|
|
|
118
118
|
body: snippet,
|
|
119
119
|
returnUrl: describeReturnUrl(returnUrl),
|
|
120
120
|
});
|
|
121
|
+
const returnHostRejected = res.status === 400 && /return[_ -]?url|return[_ -]?host|allowed host|toegestaan/i.test(snippet);
|
|
122
|
+
if (returnHostRejected) {
|
|
123
|
+
throw new Error(`Central Auth staat de return-host ${returnDetails.host ?? "van deze shell"} niet toe. Registreer deze host in Central Auth en probeer opnieuw.`);
|
|
124
|
+
}
|
|
121
125
|
throw new Error(`Central Auth authorize faalde (${res.status}): ${snippet}`);
|
|
122
126
|
}
|
|
123
127
|
let json = null;
|
|
@@ -2,4 +2,9 @@ export declare function normalizePublicBaseUrl(value: string | null | undefined)
|
|
|
2
2
|
/** Alleen relatieve paden toestaan (geen schema, geen protocol-relative). */
|
|
3
3
|
export declare function normalizeReturnPath(value: string | null | undefined, fallback?: string): string;
|
|
4
4
|
export declare function baseUrlFromRequest(request: Request | null | undefined): string | null;
|
|
5
|
+
export declare function buildReturnUrl(requestBase: string | null, envBase: string | null, returnPathValue: string | null | undefined): {
|
|
6
|
+
returnUrl: string;
|
|
7
|
+
returnPath: string;
|
|
8
|
+
source: "request" | "env";
|
|
9
|
+
};
|
|
5
10
|
//# sourceMappingURL=return-url.server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"return-url.server.d.ts","sourceRoot":"","sources":["../../../src/lib/central/return-url.server.ts"],"names":[],"mappings":"AAIA,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAatF;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"return-url.server.d.ts","sourceRoot":"","sources":["../../../src/lib/central/return-url.server.ts"],"names":[],"mappings":"AAIA,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAatF;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,SAA6B,GAAG,MAAM,CAMnH;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAiBrF;AAED,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACzC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAA;CAAE,CAsBtE"}
|
|
@@ -22,7 +22,7 @@ export function normalizePublicBaseUrl(value) {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
/** Alleen relatieve paden toestaan (geen schema, geen protocol-relative). */
|
|
25
|
-
export function normalizeReturnPath(value, fallback = "/
|
|
25
|
+
export function normalizeReturnPath(value, fallback = "/twinfield-authenticatie") {
|
|
26
26
|
const raw = (value ?? "").trim();
|
|
27
27
|
if (!raw.startsWith("/") || raw.startsWith("//"))
|
|
28
28
|
return fallback;
|
|
@@ -52,3 +52,20 @@ export function baseUrlFromRequest(request) {
|
|
|
52
52
|
return null;
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
+
export function buildReturnUrl(requestBase, envBase, returnPathValue) {
|
|
56
|
+
const base = requestBase ?? envBase;
|
|
57
|
+
if (!base) {
|
|
58
|
+
throw new Error("Kon de basis-URL van deze app niet bepalen. Stel PUBLIC_BASE_URL in als absolute https-URL (bijv. https://jouw-shell.nl).");
|
|
59
|
+
}
|
|
60
|
+
const returnPath = normalizeReturnPath(returnPathValue);
|
|
61
|
+
const returnUrl = new URL(returnPath, `${base}/`);
|
|
62
|
+
const expectedOrigin = new URL(base).origin;
|
|
63
|
+
if (returnUrl.protocol !== "https:" || returnUrl.origin !== expectedOrigin) {
|
|
64
|
+
throw new Error("De return-URL kon niet veilig worden opgebouwd uit de HTTPS-origin van deze shell.");
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
returnUrl: returnUrl.toString(),
|
|
68
|
+
returnPath,
|
|
69
|
+
source: requestBase ? "request" : "env",
|
|
70
|
+
};
|
|
71
|
+
}
|