@flowselections/floriday-authenticatie-module 1.0.53 → 1.0.55
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/floriday/FlorydayConnectionPage.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydayConnectionPage.js +2 -1
- package/dist-lib/components/floriday/FlorydayShellRoutesCard.d.ts +2 -0
- package/dist-lib/components/floriday/FlorydayShellRoutesCard.d.ts.map +1 -0
- package/dist-lib/components/floriday/FlorydayShellRoutesCard.js +22 -0
- package/dist-lib/components/settings/FlorydaySettingsCard.d.ts.map +1 -1
- package/dist-lib/components/settings/FlorydaySettingsCard.js +26 -48
- package/dist-lib/index.js +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +2 -32082
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +1418 -6
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/cron/process-stock-queue.d.ts +44 -5
- package/dist-lib/lib/cron/process-stock-queue.d.ts.map +1 -1
- package/dist-lib/lib/cron/process-stock-queue.js +167 -96
- package/dist-lib/lib/floriday-gln.d.ts +6 -0
- package/dist-lib/lib/floriday-gln.d.ts.map +1 -0
- package/dist-lib/lib/floriday-gln.js +22 -0
- package/dist-lib/lib/floriday-own-config.d.ts +68 -0
- package/dist-lib/lib/floriday-own-config.d.ts.map +1 -0
- package/dist-lib/lib/floriday-own-config.js +73 -0
- package/dist-lib/lib/floriday-scopes.d.ts +7 -0
- package/dist-lib/lib/floriday-scopes.d.ts.map +1 -1
- package/dist-lib/lib/floriday-scopes.js +34 -0
- package/dist-lib/lib/floriday-sync.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-sync.functions.js +12 -2
- package/dist-lib/lib/floriday.functions.d.ts +49 -12
- package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday.functions.js +221 -63
- package/dist-lib/lib/gateway/diagnostics.d.ts.map +1 -1
- package/dist-lib/lib/gateway/diagnostics.js +12 -0
- package/dist-lib/lib/gateway/floriday-get.d.ts +55 -0
- package/dist-lib/lib/gateway/floriday-get.d.ts.map +1 -0
- package/dist-lib/lib/gateway/floriday-get.js +185 -0
- package/dist-lib/lib/gateway/index.d.ts +1 -0
- package/dist-lib/lib/gateway/index.d.ts.map +1 -1
- package/dist-lib/lib/gateway/index.js +1 -0
- package/dist-lib/lib/gateway/webhook-subscribe.d.ts.map +1 -1
- package/dist-lib/lib/gateway/webhook-subscribe.js +13 -1
- package/dist-lib/lib/shell-base.d.ts +2 -0
- package/dist-lib/lib/shell-base.d.ts.map +1 -0
- package/dist-lib/lib/shell-base.js +31 -0
- package/dist-lib/lib/shell-routes.d.ts +25 -0
- package/dist-lib/lib/shell-routes.d.ts.map +1 -0
- package/dist-lib/lib/shell-routes.js +127 -0
- package/package.json +6 -489
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday-sync.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-sync.functions.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"floriday-sync.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-sync.functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// ============================================================================
|
|
8
8
|
import { createServerFn } from "@tanstack/react-start";
|
|
9
9
|
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
|
|
10
|
-
import { FLORYDAY_CONTRACT_PERMISSION_MESSAGE, FLORYDAY_SALES_STRATEGY_PERMISSION_MESSAGE, FLORYDAY_SUPPLY_PERMISSION_MESSAGE, } from "./floriday-scopes.js";
|
|
10
|
+
import { FLORYDAY_CONTRACT_PERMISSION_MESSAGE, FLORYDAY_SALES_STRATEGY_PERMISSION_MESSAGE, FLORYDAY_SUPPLY_PERMISSION_MESSAGE, floridayErrorShowsMissingPermission, } from "./floriday-scopes.js";
|
|
11
11
|
import { SUPPLIERS_API_VERSION, getActiveFlorydayCredentials, resolveVerifiedFlorydayCronUrl, syncFloridayEntityBySequence, } from "./floriday.functions.js";
|
|
12
12
|
// Stale-write bescherming (gedeeld met de connections-sync): een vertraagde
|
|
13
13
|
// batch mag een nieuwere cache-rij nooit terugzetten.
|
|
@@ -406,6 +406,14 @@ const RESOURCE_CONFIG = {
|
|
|
406
406
|
if (rows.length === 0)
|
|
407
407
|
return;
|
|
408
408
|
await upsertInChunks(supabase, "floriday_warehouses_cache", rows, "connection_id,floriday_id", "warehouses");
|
|
409
|
+
// Voorkeursmagazijn alleen vullen als het leeg is (op id); niet-fataal.
|
|
410
|
+
try {
|
|
411
|
+
const { autoFillPreferredWarehouse } = await import("./floriday.functions.js");
|
|
412
|
+
await autoFillPreferredWarehouse(supabase, connectionId);
|
|
413
|
+
}
|
|
414
|
+
catch (e) {
|
|
415
|
+
console.warn("[floriday] automatisch voorkeursmagazijn mislukt:", e);
|
|
416
|
+
}
|
|
409
417
|
},
|
|
410
418
|
},
|
|
411
419
|
"delivery-locations": {
|
|
@@ -660,7 +668,9 @@ async function runSyncHandler(context, environment, resource) {
|
|
|
660
668
|
else if (isContractResource && policyDenied) {
|
|
661
669
|
message = FLORYDAY_CONTRACT_PERMISSION_MESSAGE;
|
|
662
670
|
}
|
|
663
|
-
else if (resource === "catalog-prices" &&
|
|
671
|
+
else if (resource === "catalog-prices" &&
|
|
672
|
+
floridayErrorShowsMissingPermission(rawMessage)) {
|
|
673
|
+
// Alleen bij aantoonbaar ontbrekend recht; een kale 403 tonen we ongewijzigd.
|
|
664
674
|
message = FLORYDAY_SUPPLY_PERMISSION_MESSAGE;
|
|
665
675
|
}
|
|
666
676
|
return {
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
2
2
|
export type FlorydayEnvironment = "staging" | "live";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* Retourneert null als geldig, anders een nl-foutmelding.
|
|
6
|
-
*/
|
|
7
|
-
export declare function validateGln(input: string): string | null;
|
|
3
|
+
export { validateGln } from "./floriday-gln.js";
|
|
4
|
+
import { type GlnDecision, type PreferredWarehouseDecision } from "./floriday-own-config.js";
|
|
8
5
|
export interface FlorydayConnectionPublic {
|
|
9
6
|
id: string;
|
|
10
7
|
environment: FlorydayEnvironment;
|
|
@@ -46,6 +43,40 @@ export declare function getFlorydayAccessToken(supabase: SupabaseClient, env: Fl
|
|
|
46
43
|
forceRefresh?: boolean;
|
|
47
44
|
scope?: string;
|
|
48
45
|
}): Promise<string>;
|
|
46
|
+
/** Eigen magazijnen van een koppeling uit de cache (op id). */
|
|
47
|
+
export declare function loadOwnWarehousesFromCache(admin: SupabaseClient, connectionId: string): Promise<Array<{
|
|
48
|
+
id: string;
|
|
49
|
+
name: string;
|
|
50
|
+
gln: string | null;
|
|
51
|
+
isDefault: boolean;
|
|
52
|
+
isDeleted: boolean;
|
|
53
|
+
isExternal: boolean;
|
|
54
|
+
hasAccess: boolean;
|
|
55
|
+
}>>;
|
|
56
|
+
/**
|
|
57
|
+
* Vult preferred_warehouse_id alleen als die leeg is: bij precies één eigen
|
|
58
|
+
* magazijn, of bij meerdere met precies één Floriday-standaardmagazijn.
|
|
59
|
+
* Altijd op id; bestaande keuze wordt nooit overschreven.
|
|
60
|
+
*/
|
|
61
|
+
export declare function autoFillPreferredWarehouse(admin: SupabaseClient, connectionId: string): Promise<PreferredWarehouseDecision>;
|
|
62
|
+
export interface FlorydayOwnConfigStatus {
|
|
63
|
+
connected: boolean;
|
|
64
|
+
gln: GlnDecision | null;
|
|
65
|
+
storedGln: string | null;
|
|
66
|
+
warehouse: PreferredWarehouseDecision | null;
|
|
67
|
+
preferredWarehouseId: string | null;
|
|
68
|
+
preferredWarehouseName: string | null;
|
|
69
|
+
ownWarehouses: FlorydayWarehouse[];
|
|
70
|
+
}
|
|
71
|
+
export declare const getFlorydayOwnConfigStatus: import("@tanstack/start-client-core").RequiredFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
72
|
+
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
73
|
+
userId: string;
|
|
74
|
+
claims: import("@supabase/auth-js").JwtPayload;
|
|
75
|
+
}, undefined, undefined, undefined>], (input: {
|
|
76
|
+
environment: FlorydayEnvironment;
|
|
77
|
+
}) => {
|
|
78
|
+
environment: FlorydayEnvironment;
|
|
79
|
+
}, Promise<FlorydayOwnConfigStatus>>;
|
|
49
80
|
export declare function getActiveFlorydayEnvironment(supabase: SupabaseClient): Promise<FlorydayEnvironment>;
|
|
50
81
|
export declare function florydayFetch(supabase: SupabaseClient, pathOrEnv: string | FlorydayEnvironment, pathOrInit?: string | RequestInit, maybeInit?: RequestInit): Promise<Response>;
|
|
51
82
|
export declare const listFlorydayConnections: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
@@ -178,6 +209,8 @@ export declare function resolveVerifiedFlorydayCronUrl(path: string): Promise<st
|
|
|
178
209
|
export declare function syncShellHostRuntimeConfig(): Promise<{
|
|
179
210
|
base: string | null;
|
|
180
211
|
changed: boolean;
|
|
212
|
+
shellBaseChanged?: boolean;
|
|
213
|
+
skipped?: string;
|
|
181
214
|
}>;
|
|
182
215
|
export declare const getFlorydayShellHostStatus: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
183
216
|
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
@@ -198,6 +231,15 @@ export declare const getFlorydayShellHostStatus: import("@tanstack/start-client-
|
|
|
198
231
|
matches: boolean;
|
|
199
232
|
error?: undefined;
|
|
200
233
|
}>>;
|
|
234
|
+
export declare const getFlorydayShellRoutesStatus: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
235
|
+
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
236
|
+
userId: string;
|
|
237
|
+
claims: import("@supabase/auth-js").JwtPayload;
|
|
238
|
+
}, undefined, undefined, undefined>], (d: {
|
|
239
|
+
force?: boolean;
|
|
240
|
+
} | undefined) => {
|
|
241
|
+
force: boolean;
|
|
242
|
+
}, Promise<import("./shell-routes.js").ShellRoutesReport>>;
|
|
201
243
|
export declare const repairFlorydayShellHost: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
202
244
|
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
203
245
|
userId: string;
|
|
@@ -256,14 +298,10 @@ export declare const updateFlorydayPublishingSettings: import("@tanstack/start-c
|
|
|
256
298
|
claims: import("@supabase/auth-js").JwtPayload;
|
|
257
299
|
}, undefined, undefined, undefined>], (input: {
|
|
258
300
|
environment: FlorydayEnvironment;
|
|
259
|
-
|
|
260
|
-
preferred_warehouse_id?: string | null;
|
|
261
|
-
preferred_warehouse_name?: string | null;
|
|
301
|
+
preferred_warehouse_id: string;
|
|
262
302
|
}) => {
|
|
263
|
-
gln_code: string | null;
|
|
264
303
|
environment: FlorydayEnvironment;
|
|
265
|
-
preferred_warehouse_id
|
|
266
|
-
preferred_warehouse_name?: string | null;
|
|
304
|
+
preferred_warehouse_id: string;
|
|
267
305
|
}, Promise<{
|
|
268
306
|
ok: true;
|
|
269
307
|
}>>;
|
|
@@ -510,5 +548,4 @@ export declare const getFlorydayCredentialStatus: import("@tanstack/start-client
|
|
|
510
548
|
reason: "ready";
|
|
511
549
|
message: "Floriday-credential is geldig.";
|
|
512
550
|
}>>;
|
|
513
|
-
export {};
|
|
514
551
|
//# sourceMappingURL=floriday.functions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday.functions.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAc5D,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"floriday.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday.functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,27 +7,8 @@
|
|
|
7
7
|
import { createServerFn } from "@tanstack/react-start";
|
|
8
8
|
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
|
|
9
9
|
import { FLORYDAY_CLOCK_SUPPLY_PERMISSION_MESSAGE, FLORYDAY_CONTRACT_PERMISSION_MESSAGE, FLORYDAY_SALES_STRATEGY_PERMISSION_MESSAGE, FLORYDAY_STANDARD_SCOPE, getFlorydayScopeForPath, isClockSupplyScope, isContractScope, isSalesStrategyScope, } from "./floriday-scopes.js";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
* Retourneert null als geldig, anders een nl-foutmelding.
|
|
13
|
-
*/
|
|
14
|
-
export function validateGln(input) {
|
|
15
|
-
const v = input.trim();
|
|
16
|
-
if (!v)
|
|
17
|
-
return "GLN-code is verplicht";
|
|
18
|
-
if (!/^\d{13}$/.test(v))
|
|
19
|
-
return "GLN-code moet uit precies 13 cijfers bestaan";
|
|
20
|
-
const digits = v.split("").map(Number);
|
|
21
|
-
// GS1 mod-10: positie 1 (meest links) ×3, positie 2 ×1, … t/m positie 12.
|
|
22
|
-
let sum = 0;
|
|
23
|
-
for (let i = 0; i < 12; i++) {
|
|
24
|
-
sum += digits[i] * (i % 2 === 0 ? 3 : 1);
|
|
25
|
-
}
|
|
26
|
-
const check = (10 - (sum % 10)) % 10;
|
|
27
|
-
if (check !== digits[12])
|
|
28
|
-
return "GLN-code heeft een ongeldig controlecijfer";
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
10
|
+
export { validateGln } from "./floriday-gln.js";
|
|
11
|
+
import { decideGln, decidePreferredWarehouse, isOwnWarehouse, warehouseLabel } from "./floriday-own-config.js";
|
|
31
12
|
const FLORYDAY_ENDPOINTS = {
|
|
32
13
|
staging: {
|
|
33
14
|
tokenUrl: "https://idm.staging.floriday.io/oauth2/ausmw6b47z1BnlHkw0h7/v1/token",
|
|
@@ -281,20 +262,36 @@ async function fetchAndStoreFlorydayOrganizationName(supabase, env, connectionId
|
|
|
281
262
|
}
|
|
282
263
|
const orgJson = await orgRes.json().catch(() => null);
|
|
283
264
|
const name = orgJson?.name ?? orgJson?.commercialName ?? null;
|
|
284
|
-
const
|
|
285
|
-
if (!name)
|
|
286
|
-
return null;
|
|
287
|
-
// Lees huidige rij om gln_code niet te overschrijven als die al gezet is.
|
|
265
|
+
const remoteGln = orgJson?.companyGln ?? null;
|
|
288
266
|
const { data: existing } = await supabaseAdmin
|
|
289
267
|
.from("floriday_connections")
|
|
290
268
|
.select("gln_code")
|
|
291
269
|
.eq("id", connectionId)
|
|
292
270
|
.maybeSingle();
|
|
293
|
-
const
|
|
294
|
-
|
|
295
|
-
|
|
271
|
+
const storedGln = existing?.gln_code ?? null;
|
|
272
|
+
const decision = decideGln({ stored: storedGln, fromFloriday: remoteGln });
|
|
273
|
+
if (name) {
|
|
274
|
+
await supabaseAdmin
|
|
275
|
+
.from("floriday_connections")
|
|
276
|
+
.update({ organization_name: name })
|
|
277
|
+
.eq("id", connectionId);
|
|
296
278
|
}
|
|
297
|
-
|
|
279
|
+
if (decision.kind === "fill") {
|
|
280
|
+
// Alleen een leeg veld vullen; filter op null voorkomt overschrijven.
|
|
281
|
+
await supabaseAdmin
|
|
282
|
+
.from("floriday_connections")
|
|
283
|
+
.update({ gln_code: decision.gln })
|
|
284
|
+
.eq("id", connectionId)
|
|
285
|
+
.is("gln_code", null);
|
|
286
|
+
console.log(`[floriday] gln_code automatisch ingevuld uit Floriday (connection ${connectionId})`);
|
|
287
|
+
}
|
|
288
|
+
else if (decision.kind === "mismatch") {
|
|
289
|
+
console.warn(`[floriday] GLN in Floriday wijkt af van opgeslagen GLN (connection ${connectionId}); niet overschreven`);
|
|
290
|
+
}
|
|
291
|
+
else if (decision.kind === "invalid") {
|
|
292
|
+
console.warn(`[floriday] companyGln uit Floriday ongeldig (${decision.error}); niet opgeslagen`);
|
|
293
|
+
}
|
|
294
|
+
await autoFillPreferredWarehouse(supabaseAdmin, connectionId).catch(() => null);
|
|
298
295
|
return name;
|
|
299
296
|
}
|
|
300
297
|
catch (e) {
|
|
@@ -302,6 +299,113 @@ async function fetchAndStoreFlorydayOrganizationName(supabase, env, connectionId
|
|
|
302
299
|
return null;
|
|
303
300
|
}
|
|
304
301
|
}
|
|
302
|
+
/** Haalt companyGln van de eigen organisatie op (null als niet beschikbaar). */
|
|
303
|
+
async function fetchOwnCompanyGln(supabase, env) {
|
|
304
|
+
try {
|
|
305
|
+
const tsRes = await florydayFetch(supabase, env, `/${SUPPLIERS_API_VERSION}/trade-settings/supplier/current-organization`);
|
|
306
|
+
if (!tsRes.ok)
|
|
307
|
+
return null;
|
|
308
|
+
const orgId = (await tsRes.json().catch(() => null))?.supplierOrganizationId;
|
|
309
|
+
if (!orgId)
|
|
310
|
+
return null;
|
|
311
|
+
const orgRes = await florydayFetch(supabase, env, `/${SUPPLIERS_API_VERSION}/organizations/${orgId}`);
|
|
312
|
+
if (!orgRes.ok)
|
|
313
|
+
return null;
|
|
314
|
+
return (await orgRes.json().catch(() => null))?.companyGln ?? null;
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
return null;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/** Eigen magazijnen van een koppeling uit de cache (op id). */
|
|
321
|
+
export async function loadOwnWarehousesFromCache(admin, connectionId) {
|
|
322
|
+
const { data } = await admin
|
|
323
|
+
.from("floriday_warehouses_cache")
|
|
324
|
+
.select("floriday_id, name, gln_code, data")
|
|
325
|
+
.eq("connection_id", connectionId)
|
|
326
|
+
.limit(500);
|
|
327
|
+
return (data ?? [])
|
|
328
|
+
.map((r) => ({
|
|
329
|
+
id: String(r.floriday_id ?? r?.data?.warehouseId ?? ""),
|
|
330
|
+
name: warehouseLabel(r),
|
|
331
|
+
gln: r.gln_code ?? r?.data?.location?.gln ?? null,
|
|
332
|
+
isDefault: r?.data?.isDefault === true,
|
|
333
|
+
isDeleted: r?.data?.isDeleted === true,
|
|
334
|
+
isExternal: r?.data?.isExternal === true,
|
|
335
|
+
hasAccess: r?.data?.hasAccess !== false,
|
|
336
|
+
}))
|
|
337
|
+
.filter((w) => w.id && isOwnWarehouse(w));
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Vult preferred_warehouse_id alleen als die leeg is: bij precies één eigen
|
|
341
|
+
* magazijn, of bij meerdere met precies één Floriday-standaardmagazijn.
|
|
342
|
+
* Altijd op id; bestaande keuze wordt nooit overschreven.
|
|
343
|
+
*/
|
|
344
|
+
export async function autoFillPreferredWarehouse(admin, connectionId) {
|
|
345
|
+
const { data: conn } = await admin
|
|
346
|
+
.from("floriday_connections")
|
|
347
|
+
.select("preferred_warehouse_id")
|
|
348
|
+
.eq("id", connectionId)
|
|
349
|
+
.maybeSingle();
|
|
350
|
+
const own = await loadOwnWarehousesFromCache(admin, connectionId);
|
|
351
|
+
const decision = decidePreferredWarehouse({ currentId: conn?.preferred_warehouse_id ?? null, warehouses: own });
|
|
352
|
+
if (decision.kind === "fill") {
|
|
353
|
+
const chosen = own.find((w) => w.id === decision.id);
|
|
354
|
+
const { data: updated } = await admin
|
|
355
|
+
.from("floriday_connections")
|
|
356
|
+
.update({ preferred_warehouse_id: decision.id, preferred_warehouse_name: chosen?.name ?? null })
|
|
357
|
+
.eq("id", connectionId)
|
|
358
|
+
.is("preferred_warehouse_id", null)
|
|
359
|
+
.select("id");
|
|
360
|
+
if (Array.isArray(updated) && updated.length > 0) {
|
|
361
|
+
console.log(`[floriday] voorkeursmagazijn automatisch ingevuld (${decision.reason}) voor connection ${connectionId}`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return decision;
|
|
365
|
+
}
|
|
366
|
+
export const getFlorydayOwnConfigStatus = createServerFn({ method: "POST" })
|
|
367
|
+
.middleware([requireSupabaseAuth])
|
|
368
|
+
.inputValidator((input) => {
|
|
369
|
+
if (!["staging", "live"].includes(input.environment))
|
|
370
|
+
throw new Error("Ongeldige environment");
|
|
371
|
+
return input;
|
|
372
|
+
})
|
|
373
|
+
.handler(async ({ data, context }) => {
|
|
374
|
+
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
375
|
+
const row = await getActiveFlorydayCredentials(context.supabase, data.environment);
|
|
376
|
+
if (!row) {
|
|
377
|
+
return { connected: false, gln: null, storedGln: null, warehouse: null, preferredWarehouseId: null, preferredWarehouseName: null, ownWarehouses: [] };
|
|
378
|
+
}
|
|
379
|
+
// GLN: lezen uit Floriday, alleen een leeg veld vullen.
|
|
380
|
+
const remote = await fetchOwnCompanyGln(context.supabase, data.environment);
|
|
381
|
+
const { data: cur } = await supabaseAdmin
|
|
382
|
+
.from("floriday_connections")
|
|
383
|
+
.select("gln_code")
|
|
384
|
+
.eq("id", row.id)
|
|
385
|
+
.maybeSingle();
|
|
386
|
+
const gln = decideGln({ stored: cur?.gln_code ?? null, fromFloriday: remote });
|
|
387
|
+
if (gln.kind === "fill") {
|
|
388
|
+
await supabaseAdmin.from("floriday_connections").update({ gln_code: gln.gln }).eq("id", row.id).is("gln_code", null);
|
|
389
|
+
}
|
|
390
|
+
const warehouse = await autoFillPreferredWarehouse(supabaseAdmin, row.id);
|
|
391
|
+
const { data: after } = await supabaseAdmin
|
|
392
|
+
.from("floriday_connections")
|
|
393
|
+
.select("gln_code, preferred_warehouse_id, preferred_warehouse_name")
|
|
394
|
+
.eq("id", row.id)
|
|
395
|
+
.maybeSingle();
|
|
396
|
+
const own = await loadOwnWarehousesFromCache(supabaseAdmin, row.id);
|
|
397
|
+
return {
|
|
398
|
+
connected: true,
|
|
399
|
+
gln,
|
|
400
|
+
storedGln: after?.gln_code ?? null,
|
|
401
|
+
warehouse,
|
|
402
|
+
preferredWarehouseId: after?.preferred_warehouse_id ?? null,
|
|
403
|
+
preferredWarehouseName: after?.preferred_warehouse_name ?? null,
|
|
404
|
+
ownWarehouses: own
|
|
405
|
+
.map((w) => ({ id: w.id, name: w.name, gln: w.gln, isDefault: w.isDefault }))
|
|
406
|
+
.sort((a, b) => (a.isDefault !== b.isDefault ? (a.isDefault ? -1 : 1) : a.name.localeCompare(b.name, "nl"))),
|
|
407
|
+
};
|
|
408
|
+
});
|
|
305
409
|
export async function getActiveFlorydayEnvironment(supabase) {
|
|
306
410
|
const { data } = await supabase
|
|
307
411
|
.from("floriday_settings")
|
|
@@ -578,6 +682,15 @@ export const upsertFlorydayConnection = createServerFn({ method: "POST" })
|
|
|
578
682
|
catch (e) {
|
|
579
683
|
console.error("[floriday] auto webhook-subscribe failed:", e);
|
|
580
684
|
}
|
|
685
|
+
// Controle of de Shell alle gateway-routes van deze module bedient.
|
|
686
|
+
try {
|
|
687
|
+
const { checkShellRoutes, logShellRoutesReport } = await import("./shell-routes.js");
|
|
688
|
+
const r = await checkShellRoutes({ force: true });
|
|
689
|
+
await logShellRoutesReport(supabaseAdmin, r, "nieuwe/gewijzigde koppeling");
|
|
690
|
+
}
|
|
691
|
+
catch (e) {
|
|
692
|
+
console.error("[floriday] shell-routes check failed:", e);
|
|
693
|
+
}
|
|
581
694
|
// Automatisch (her)plan de uurlijkse token-refresh cron. Niet-fataal
|
|
582
695
|
// bij falen — credentials zijn al opgeslagen.
|
|
583
696
|
try {
|
|
@@ -889,36 +1002,69 @@ export async function resolveVerifiedFlorydayCronUrl(path) {
|
|
|
889
1002
|
export async function syncShellHostRuntimeConfig() {
|
|
890
1003
|
let base = null;
|
|
891
1004
|
try {
|
|
892
|
-
//
|
|
893
|
-
//
|
|
894
|
-
// Alleen de actieve tenant-host uit Central Auth mag deze waarde bepalen.
|
|
1005
|
+
// Geen project/env-fallback: alleen de actieve tenant-host uit Central
|
|
1006
|
+
// Auth mag deze waarden bepalen.
|
|
895
1007
|
const { getShellHostFromCentral } = await import("./central-auth.server.js");
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
1008
|
+
const { normalizeShellBase } = await import("./shell-base.js");
|
|
1009
|
+
const raw = await getShellHostFromCentral();
|
|
1010
|
+
if (!raw)
|
|
1011
|
+
return { base: null, changed: false, skipped: "Central Auth gaf geen shell-host" };
|
|
1012
|
+
base = normalizeShellBase(raw);
|
|
1013
|
+
if (!base) {
|
|
1014
|
+
console.warn(`[floriday] shell-host uit Central Auth afgewezen (ongeldig): ${String(raw).slice(0, 120)}`);
|
|
1015
|
+
return { base: null, changed: false, skipped: "ongeldige shell-host" };
|
|
1016
|
+
}
|
|
899
1017
|
}
|
|
900
1018
|
catch {
|
|
901
|
-
return { base: null, changed: false };
|
|
1019
|
+
return { base: null, changed: false, skipped: "Central Auth niet bereikbaar" };
|
|
902
1020
|
}
|
|
903
1021
|
try {
|
|
904
1022
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
905
|
-
const
|
|
1023
|
+
const db = supabaseAdmin;
|
|
1024
|
+
const { data: rows } = await db
|
|
906
1025
|
.from("module_runtime_config")
|
|
907
|
-
.select("value")
|
|
908
|
-
.
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
1026
|
+
.select("key, value")
|
|
1027
|
+
.in("key", ["stock_queue_processor_base_url", "shell_base_url"]);
|
|
1028
|
+
const cur = new Map((rows ?? []).map((r) => [r.key, r.value]));
|
|
1029
|
+
const stockSame = cur.get("stock_queue_processor_base_url") === base;
|
|
1030
|
+
const shellSame = cur.get("shell_base_url") === base;
|
|
1031
|
+
if (stockSame && shellSame)
|
|
1032
|
+
return { base, changed: false, shellBaseChanged: false };
|
|
1033
|
+
// Alleen schrijven als dit adres deze module aantoonbaar bedient.
|
|
1034
|
+
const pingErr = await checkShellServesCronRoute(base, "/api/public/cron/ping");
|
|
1035
|
+
if (pingErr) {
|
|
1036
|
+
console.warn(`[floriday] shell-host ${base} niet geschreven: ${pingErr}`);
|
|
1037
|
+
return { base, changed: false, skipped: pingErr };
|
|
1038
|
+
}
|
|
1039
|
+
const now = new Date().toISOString();
|
|
1040
|
+
let shellBaseChanged = false;
|
|
1041
|
+
if (!shellSame) {
|
|
1042
|
+
const previous = cur.get("shell_base_url") ?? null;
|
|
1043
|
+
if (previous) {
|
|
1044
|
+
await db.from("module_runtime_config").upsert({ key: "shell_base_url_previous", value: previous, updated_at: now }, { onConflict: "key" });
|
|
1045
|
+
}
|
|
1046
|
+
await db.from("module_runtime_config").upsert({ key: "shell_base_url", value: base, updated_at: now }, { onConflict: "key" });
|
|
1047
|
+
shellBaseChanged = true;
|
|
1048
|
+
await db.from("floriday_write_log").insert({
|
|
1049
|
+
connection_id: null,
|
|
1050
|
+
module: "floriday-authenticatie",
|
|
1051
|
+
action: "shell-host-changed",
|
|
1052
|
+
resource: "module_runtime_config",
|
|
1053
|
+
floriday_id: null,
|
|
1054
|
+
request: { key: "shell_base_url", from: previous, to: base },
|
|
1055
|
+
response: null,
|
|
1056
|
+
http_status: 0,
|
|
1057
|
+
ok: true,
|
|
1058
|
+
error: `shell-host gewijzigd van ${previous ?? "(leeg)"} naar ${base}`,
|
|
1059
|
+
idempotency_key: null,
|
|
1060
|
+
caller: "shell-host-sync",
|
|
1061
|
+
}).then(() => undefined, () => undefined);
|
|
1062
|
+
}
|
|
1063
|
+
if (!stockSame) {
|
|
1064
|
+
await db.from("module_runtime_config").upsert({ key: "stock_queue_processor_base_url", value: base, updated_at: now }, { onConflict: "key" });
|
|
1065
|
+
}
|
|
920
1066
|
console.log(`[floriday] shell-host bijgewerkt naar ${base}`);
|
|
921
|
-
return { base, changed:
|
|
1067
|
+
return { base, changed: !stockSame, shellBaseChanged };
|
|
922
1068
|
}
|
|
923
1069
|
catch (e) {
|
|
924
1070
|
console.warn(`[floriday] shell-host synchroniseren mislukt: ${e?.message ?? e}`);
|
|
@@ -956,6 +1102,18 @@ export const getFlorydayShellHostStatus = createServerFn({ method: "GET" })
|
|
|
956
1102
|
matches: Boolean(centralHost && processorHost === centralHost),
|
|
957
1103
|
};
|
|
958
1104
|
});
|
|
1105
|
+
export const getFlorydayShellRoutesStatus = createServerFn({ method: "POST" })
|
|
1106
|
+
.middleware([requireSupabaseAuth])
|
|
1107
|
+
.inputValidator((d) => ({ force: d?.force === true }))
|
|
1108
|
+
.handler(async ({ data }) => {
|
|
1109
|
+
const { checkShellRoutes, logShellRoutesReport } = await import("./shell-routes.js");
|
|
1110
|
+
const report = await checkShellRoutes({ force: data.force });
|
|
1111
|
+
if (data.force) {
|
|
1112
|
+
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
1113
|
+
await logShellRoutesReport(supabaseAdmin, report, "handmatige controle");
|
|
1114
|
+
}
|
|
1115
|
+
return report;
|
|
1116
|
+
});
|
|
959
1117
|
export const repairFlorydayShellHost = createServerFn({ method: "POST" })
|
|
960
1118
|
.middleware([requireSupabaseAuth])
|
|
961
1119
|
.handler(async ({ context }) => {
|
|
@@ -1043,8 +1201,7 @@ export const listFlorydayWarehouses = createServerFn({ method: "POST" })
|
|
|
1043
1201
|
const json = await res.json().catch(() => null);
|
|
1044
1202
|
const raw = Array.isArray(json) ? json : [];
|
|
1045
1203
|
const warehouses = raw
|
|
1046
|
-
.filter((w) => w
|
|
1047
|
-
w?.hasAccess !== false &&
|
|
1204
|
+
.filter((w) => isOwnWarehouse(w ?? {}) &&
|
|
1048
1205
|
Boolean(String(w?.name ?? "").trim() ||
|
|
1049
1206
|
String(w?.location?.address?.addressLine ?? "").trim() ||
|
|
1050
1207
|
String(w?.location?.gln ?? w?.location?.glnCode ?? "").trim()))
|
|
@@ -1077,25 +1234,26 @@ export const updateFlorydayPublishingSettings = createServerFn({ method: "POST"
|
|
|
1077
1234
|
if (!["staging", "live"].includes(input.environment)) {
|
|
1078
1235
|
throw new Error("Ongeldige environment");
|
|
1079
1236
|
}
|
|
1080
|
-
const
|
|
1081
|
-
if (
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
}
|
|
1086
|
-
return { ...input, gln_code: trimmed || null };
|
|
1237
|
+
const id = String(input.preferred_warehouse_id ?? "").trim();
|
|
1238
|
+
if (!id)
|
|
1239
|
+
throw new Error("Kies een magazijn");
|
|
1240
|
+
// GLN wordt niet meer aangenomen: die komt altijd uit Floriday.
|
|
1241
|
+
return { environment: input.environment, preferred_warehouse_id: id };
|
|
1087
1242
|
})
|
|
1088
1243
|
.handler(async ({ data, context }) => {
|
|
1089
1244
|
const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
|
|
1090
1245
|
const row = await getActiveFlorydayCredentials(context.supabase, data.environment);
|
|
1091
1246
|
if (!row)
|
|
1092
1247
|
throw new Error(`Geen actieve Floriday-koppeling voor ${data.environment}`);
|
|
1248
|
+
const own = await loadOwnWarehousesFromCache(supabaseAdmin, row.id);
|
|
1249
|
+
const chosen = own.find((w) => w.id === data.preferred_warehouse_id);
|
|
1250
|
+
if (!chosen)
|
|
1251
|
+
throw new Error("Dit magazijn is geen eigen magazijn van deze koppeling");
|
|
1093
1252
|
const { error } = await supabaseAdmin
|
|
1094
1253
|
.from("floriday_connections")
|
|
1095
1254
|
.update({
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
preferred_warehouse_name: data.preferred_warehouse_name || null,
|
|
1255
|
+
preferred_warehouse_id: chosen.id,
|
|
1256
|
+
preferred_warehouse_name: chosen.name,
|
|
1099
1257
|
})
|
|
1100
1258
|
.eq("id", row.id);
|
|
1101
1259
|
if (error)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/lib/gateway/diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA4B5D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA4D5B;AAQD,eAAO,MAAM,0BAA0B,QAAa,CAAC;AAqBrD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/lib/gateway/diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA4B5D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA4D5B;AAQD,eAAO,MAAM,0BAA0B,QAAa,CAAC;AAqBrD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,QAAQ,CAAC,CA8DnB"}
|
|
@@ -102,6 +102,18 @@ export async function handleDiagnostics(request, supabase) {
|
|
|
102
102
|
if (auth.rawBody.length > DIAGNOSTICS_MAX_BODY_BYTES) {
|
|
103
103
|
return _diagJson({ ok: false, error: "Diagnostics-payload te groot (max 256 KB)" }, { status: 413 });
|
|
104
104
|
}
|
|
105
|
+
// Controle op Shell-routes: { "action": "shell-routes" } (alleen lezen).
|
|
106
|
+
try {
|
|
107
|
+
const peek = auth.rawBody ? JSON.parse(auth.rawBody) : null;
|
|
108
|
+
if (peek && peek.action === "shell-routes") {
|
|
109
|
+
const { checkShellRoutes } = await import("../shell-routes.js");
|
|
110
|
+
const report = await checkShellRoutes({ force: peek.force === true });
|
|
111
|
+
return _diagJson({ ok: true, shellRoutes: report });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
/* geen JSON of controle mislukt → gewone diagnose-afhandeling */
|
|
116
|
+
}
|
|
105
117
|
try {
|
|
106
118
|
const result = await runDiagnostics(supabase, {
|
|
107
119
|
rawBody: auth.rawBody,
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export declare const BASE_SUPPLY_READ_BUCKET: {
|
|
4
|
+
bucket: string;
|
|
5
|
+
capacity: number;
|
|
6
|
+
refillPerSec: number;
|
|
7
|
+
};
|
|
8
|
+
/** Swagger: /trade-items/availabilities — 2 per seconde, burst 200. */
|
|
9
|
+
export declare const AVAILABILITIES_READ_BUCKET: {
|
|
10
|
+
bucket: string;
|
|
11
|
+
capacity: number;
|
|
12
|
+
refillPerSec: number;
|
|
13
|
+
};
|
|
14
|
+
declare const requestSchema: z.ZodObject<{
|
|
15
|
+
method: z.ZodOptional<z.ZodLiteral<"GET">>;
|
|
16
|
+
path: z.ZodString;
|
|
17
|
+
query: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
export type FloridayGetResult = {
|
|
20
|
+
ok: true;
|
|
21
|
+
status: number;
|
|
22
|
+
path: string;
|
|
23
|
+
data: unknown;
|
|
24
|
+
} | {
|
|
25
|
+
ok: false;
|
|
26
|
+
status: number;
|
|
27
|
+
path: string;
|
|
28
|
+
error: string;
|
|
29
|
+
retryAfterMs?: number;
|
|
30
|
+
floridayBody?: string;
|
|
31
|
+
};
|
|
32
|
+
type Allowed = {
|
|
33
|
+
path: string;
|
|
34
|
+
query: Record<string, string>;
|
|
35
|
+
bucket: {
|
|
36
|
+
bucket: string;
|
|
37
|
+
capacity: number;
|
|
38
|
+
refillPerSec: number;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
/** Vaste lijst met toegestane leespaden. Geeft null + reden terug bij weigering. */
|
|
42
|
+
export declare function checkFloridayGetAllowed(req: z.infer<typeof requestSchema>): {
|
|
43
|
+
ok: true;
|
|
44
|
+
value: Allowed;
|
|
45
|
+
} | {
|
|
46
|
+
ok: false;
|
|
47
|
+
error: string;
|
|
48
|
+
};
|
|
49
|
+
export declare function runFloridayGet(supabase: SupabaseClient, rawBody: unknown, caller?: string): Promise<{
|
|
50
|
+
status: number;
|
|
51
|
+
body: Record<string, unknown>;
|
|
52
|
+
}>;
|
|
53
|
+
export declare function handleFloridayGet(request: Request, supabase: SupabaseClient): Promise<Response>;
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=floriday-get.d.ts.map
|