@kywi-software/core 0.5.0 → 0.6.1
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/README.md +44 -0
- package/dist/admin/app.d.ts.map +1 -1
- package/dist/admin/app.js.map +1 -1
- package/dist/admin/field-components.d.ts.map +1 -1
- package/dist/admin/field-components.js +55 -0
- package/dist/admin/field-components.js.map +1 -1
- package/dist/admin/form-builder.js +10 -1
- package/dist/admin/form-builder.js.map +1 -1
- package/dist/admin/form-helpers.d.ts +1 -1
- package/dist/admin/form-helpers.d.ts.map +1 -1
- package/dist/admin/form-helpers.js +21 -0
- package/dist/admin/form-helpers.js.map +1 -1
- package/dist/admin/layout-editor/component-actions.d.ts +43 -1
- package/dist/admin/layout-editor/component-actions.d.ts.map +1 -1
- package/dist/admin/layout-editor/component-actions.js +59 -1
- package/dist/admin/layout-editor/component-actions.js.map +1 -1
- package/dist/admin/layout-editor/editor-canvas.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-canvas.js +1 -1
- package/dist/admin/layout-editor/editor-canvas.js.map +1 -1
- package/dist/admin/layout-editor/editor-state.d.ts +4 -0
- package/dist/admin/layout-editor/editor-state.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-state.js +17 -0
- package/dist/admin/layout-editor/editor-state.js.map +1 -1
- package/dist/admin/layout-editor/index.d.ts +1 -1
- package/dist/admin/layout-editor/index.d.ts.map +1 -1
- package/dist/admin/layout-editor/index.js +1 -1
- package/dist/admin/layout-editor/index.js.map +1 -1
- package/dist/admin/layout-editor/layout-editor.d.ts.map +1 -1
- package/dist/admin/layout-editor/layout-editor.js +95 -2
- package/dist/admin/layout-editor/layout-editor.js.map +1 -1
- package/dist/admin/layout-editor/overlay-shell.d.ts.map +1 -1
- package/dist/admin/layout-editor/overlay-shell.js +8 -0
- package/dist/admin/layout-editor/overlay-shell.js.map +1 -1
- package/dist/admin/layout-editor/props-panel.d.ts +12 -2
- package/dist/admin/layout-editor/props-panel.d.ts.map +1 -1
- package/dist/admin/layout-editor/props-panel.js +30 -14
- package/dist/admin/layout-editor/props-panel.js.map +1 -1
- package/dist/admin/layout-editor/section-overlay.d.ts +6 -1
- package/dist/admin/layout-editor/section-overlay.d.ts.map +1 -1
- package/dist/admin/layout-editor/section-overlay.js +11 -2
- package/dist/admin/layout-editor/section-overlay.js.map +1 -1
- package/dist/admin/layout-editor/section-template-picker.d.ts +8 -1
- package/dist/admin/layout-editor/section-template-picker.d.ts.map +1 -1
- package/dist/admin/layout-editor/section-template-picker.js +31 -2
- package/dist/admin/layout-editor/section-template-picker.js.map +1 -1
- package/dist/admin/registry.d.ts +6 -6
- package/dist/admin/registry.d.ts.map +1 -1
- package/dist/admin/server.d.ts +1 -0
- package/dist/admin/server.d.ts.map +1 -1
- package/dist/admin/server.js +7 -0
- package/dist/admin/server.js.map +1 -1
- package/dist/admin/surfaces/contentTypes/content-types-designer.d.ts.map +1 -1
- package/dist/admin/surfaces/contentTypes/content-types-designer.js +12 -2
- package/dist/admin/surfaces/contentTypes/content-types-designer.js.map +1 -1
- package/dist/admin/surfaces/dashboard/dashboard-index.d.ts.map +1 -1
- package/dist/admin/surfaces/dashboard/dashboard-index.js +23 -1
- package/dist/admin/surfaces/dashboard/dashboard-index.js.map +1 -1
- package/dist/admin/webhook-manager.d.ts.map +1 -1
- package/dist/admin/webhook-manager.js +1 -0
- package/dist/admin/webhook-manager.js.map +1 -1
- package/dist/api/admin-features-routes.d.ts.map +1 -1
- package/dist/api/admin-features-routes.js +7 -1
- package/dist/api/admin-features-routes.js.map +1 -1
- package/dist/api/audience-preview-routes.d.ts.map +1 -1
- package/dist/api/audience-preview-routes.js +20 -2
- package/dist/api/audience-preview-routes.js.map +1 -1
- package/dist/api/audience-routes.d.ts.map +1 -1
- package/dist/api/audience-routes.js +44 -3
- package/dist/api/audience-routes.js.map +1 -1
- package/dist/api/audience-runtime-routes.d.ts.map +1 -1
- package/dist/api/audience-runtime-routes.js +6 -2
- package/dist/api/audience-runtime-routes.js.map +1 -1
- package/dist/api/auth-routes.d.ts.map +1 -1
- package/dist/api/auth-routes.js +16 -0
- package/dist/api/auth-routes.js.map +1 -1
- package/dist/api/auth.d.ts.map +1 -1
- package/dist/api/auth.js +34 -1
- package/dist/api/auth.js.map +1 -1
- package/dist/api/bulk-routes.d.ts.map +1 -1
- package/dist/api/bulk-routes.js +44 -12
- package/dist/api/bulk-routes.js.map +1 -1
- package/dist/api/category-routes.d.ts.map +1 -1
- package/dist/api/category-routes.js +10 -1
- package/dist/api/category-routes.js.map +1 -1
- package/dist/api/changeset-routes.d.ts +9 -0
- package/dist/api/changeset-routes.d.ts.map +1 -1
- package/dist/api/changeset-routes.js +13 -2
- package/dist/api/changeset-routes.js.map +1 -1
- package/dist/api/comment-routes.d.ts.map +1 -1
- package/dist/api/comment-routes.js +27 -1
- package/dist/api/comment-routes.js.map +1 -1
- package/dist/api/component-routes.d.ts.map +1 -1
- package/dist/api/component-routes.js +16 -1
- package/dist/api/component-routes.js.map +1 -1
- package/dist/api/content-routes.d.ts.map +1 -1
- package/dist/api/content-routes.js +59 -20
- package/dist/api/content-routes.js.map +1 -1
- package/dist/api/content-schemas.d.ts.map +1 -1
- package/dist/api/content-schemas.js +39 -0
- package/dist/api/content-schemas.js.map +1 -1
- package/dist/api/content-type-routes.d.ts.map +1 -1
- package/dist/api/content-type-routes.js +25 -5
- package/dist/api/content-type-routes.js.map +1 -1
- package/dist/api/dashboard-routes.d.ts.map +1 -1
- package/dist/api/dashboard-routes.js +4 -1
- package/dist/api/dashboard-routes.js.map +1 -1
- package/dist/api/experiment-routes.d.ts.map +1 -1
- package/dist/api/experiment-routes.js +24 -2
- package/dist/api/experiment-routes.js.map +1 -1
- package/dist/api/feed-routes.d.ts +4 -4
- package/dist/api/feed-routes.d.ts.map +1 -1
- package/dist/api/feed-routes.js +12 -2
- package/dist/api/feed-routes.js.map +1 -1
- package/dist/api/form-routes.d.ts +18 -0
- package/dist/api/form-routes.d.ts.map +1 -1
- package/dist/api/form-routes.js +207 -14
- package/dist/api/form-routes.js.map +1 -1
- package/dist/api/graphql/handler.d.ts +1 -1
- package/dist/api/graphql/handler.d.ts.map +1 -1
- package/dist/api/graphql/handler.js +8 -1
- package/dist/api/graphql/handler.js.map +1 -1
- package/dist/api/graphql/resolvers.d.ts +15 -6
- package/dist/api/graphql/resolvers.d.ts.map +1 -1
- package/dist/api/graphql/resolvers.js +108 -9
- package/dist/api/graphql/resolvers.js.map +1 -1
- package/dist/api/graphql/schema.d.ts +1 -1
- package/dist/api/graphql/schema.d.ts.map +1 -1
- package/dist/api/graphql/schema.js +14 -3
- package/dist/api/graphql/schema.js.map +1 -1
- package/dist/api/group-routes.d.ts.map +1 -1
- package/dist/api/group-routes.js +27 -0
- package/dist/api/group-routes.js.map +1 -1
- package/dist/api/index.d.ts +9 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +35 -4
- package/dist/api/index.js.map +1 -1
- package/dist/api/layout-routes.d.ts.map +1 -1
- package/dist/api/layout-routes.js +13 -1
- package/dist/api/layout-routes.js.map +1 -1
- package/dist/api/media-routes.d.ts.map +1 -1
- package/dist/api/media-routes.js +19 -0
- package/dist/api/media-routes.js.map +1 -1
- package/dist/api/scheduler-routes.d.ts +10 -0
- package/dist/api/scheduler-routes.d.ts.map +1 -1
- package/dist/api/scheduler-routes.js +13 -2
- package/dist/api/scheduler-routes.js.map +1 -1
- package/dist/api/search-routes.d.ts.map +1 -1
- package/dist/api/search-routes.js +20 -2
- package/dist/api/search-routes.js.map +1 -1
- package/dist/api/section-template-routes.d.ts.map +1 -1
- package/dist/api/section-template-routes.js +16 -1
- package/dist/api/section-template-routes.js.map +1 -1
- package/dist/api/site-context.d.ts +30 -1
- package/dist/api/site-context.d.ts.map +1 -1
- package/dist/api/site-context.js +41 -0
- package/dist/api/site-context.js.map +1 -1
- package/dist/api/tag-routes.d.ts.map +1 -1
- package/dist/api/tag-routes.js +10 -1
- package/dist/api/tag-routes.js.map +1 -1
- package/dist/api/translation-routes.d.ts.map +1 -1
- package/dist/api/translation-routes.js +19 -4
- package/dist/api/translation-routes.js.map +1 -1
- package/dist/api/user-routes.d.ts.map +1 -1
- package/dist/api/user-routes.js +13 -0
- package/dist/api/user-routes.js.map +1 -1
- package/dist/api/version-routes.d.ts.map +1 -1
- package/dist/api/version-routes.js +1 -0
- package/dist/api/version-routes.js.map +1 -1
- package/dist/api/webhook-routes.d.ts.map +1 -1
- package/dist/api/webhook-routes.js +31 -2
- package/dist/api/webhook-routes.js.map +1 -1
- package/dist/api/workflow-routes.d.ts.map +1 -1
- package/dist/api/workflow-routes.js +45 -1
- package/dist/api/workflow-routes.js.map +1 -1
- package/dist/audiences/collectors/index.d.ts +1 -0
- package/dist/audiences/collectors/index.d.ts.map +1 -1
- package/dist/audiences/collectors/index.js +1 -0
- package/dist/audiences/collectors/index.js.map +1 -1
- package/dist/audiences/collectors/pinned-audience.d.ts +17 -0
- package/dist/audiences/collectors/pinned-audience.d.ts.map +1 -0
- package/dist/audiences/collectors/pinned-audience.js +22 -0
- package/dist/audiences/collectors/pinned-audience.js.map +1 -0
- package/dist/audiences/cookies.d.ts +1 -0
- package/dist/audiences/cookies.d.ts.map +1 -1
- package/dist/audiences/cookies.js +4 -0
- package/dist/audiences/cookies.js.map +1 -1
- package/dist/audiences/engine.d.ts.map +1 -1
- package/dist/audiences/engine.js +10 -2
- package/dist/audiences/engine.js.map +1 -1
- package/dist/audiences/index.d.ts +1 -0
- package/dist/audiences/index.d.ts.map +1 -1
- package/dist/audiences/index.js +4 -0
- package/dist/audiences/index.js.map +1 -1
- package/dist/audiences/utm-persistence.d.ts +46 -0
- package/dist/audiences/utm-persistence.d.ts.map +1 -0
- package/dist/audiences/utm-persistence.js +68 -0
- package/dist/audiences/utm-persistence.js.map +1 -0
- package/dist/auth/tokens.d.ts.map +1 -1
- package/dist/auth/tokens.js +14 -1
- package/dist/auth/tokens.js.map +1 -1
- package/dist/config/types.d.ts +29 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/db/bulk-queries.d.ts +8 -0
- package/dist/db/bulk-queries.d.ts.map +1 -1
- package/dist/db/bulk-queries.js +16 -0
- package/dist/db/bulk-queries.js.map +1 -1
- package/dist/db/changeset-queries.d.ts +27 -1
- package/dist/db/changeset-queries.d.ts.map +1 -1
- package/dist/db/changeset-queries.js +56 -2
- package/dist/db/changeset-queries.js.map +1 -1
- package/dist/db/content-permission-dedupe.d.ts +24 -0
- package/dist/db/content-permission-dedupe.d.ts.map +1 -0
- package/dist/db/content-permission-dedupe.js +69 -0
- package/dist/db/content-permission-dedupe.js.map +1 -0
- package/dist/db/content-permission-queries.d.ts +8 -0
- package/dist/db/content-permission-queries.d.ts.map +1 -1
- package/dist/db/content-permission-queries.js +29 -1
- package/dist/db/content-permission-queries.js.map +1 -1
- package/dist/db/content-queries.d.ts +7 -0
- package/dist/db/content-queries.d.ts.map +1 -1
- package/dist/db/content-queries.js +9 -0
- package/dist/db/content-queries.js.map +1 -1
- package/dist/db/content-type-queries.d.ts.map +1 -1
- package/dist/db/content-type-queries.js +3 -1
- package/dist/db/content-type-queries.js.map +1 -1
- package/dist/db/dynamic-schema.d.ts.map +1 -1
- package/dist/db/dynamic-schema.js +1 -0
- package/dist/db/dynamic-schema.js.map +1 -1
- package/dist/db/index.d.ts +1 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +3 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/schema-apply.d.ts.map +1 -1
- package/dist/db/schema-apply.js +1 -0
- package/dist/db/schema-apply.js.map +1 -1
- package/dist/db/schema-field-queries.d.ts +2 -0
- package/dist/db/schema-field-queries.d.ts.map +1 -1
- package/dist/db/schema-field-queries.js +4 -0
- package/dist/db/schema-field-queries.js.map +1 -1
- package/dist/db/search-queries.d.ts +7 -0
- package/dist/db/search-queries.d.ts.map +1 -1
- package/dist/db/search-queries.js +3 -0
- package/dist/db/search-queries.js.map +1 -1
- package/dist/db/site-membership-queries.d.ts +6 -0
- package/dist/db/site-membership-queries.d.ts.map +1 -1
- package/dist/db/site-membership-queries.js +9 -0
- package/dist/db/site-membership-queries.js.map +1 -1
- package/dist/db/user-search.d.ts +8 -0
- package/dist/db/user-search.d.ts.map +1 -1
- package/dist/db/user-search.js +14 -8
- package/dist/db/user-search.js.map +1 -1
- package/dist/db/workflow-queries.d.ts +1 -0
- package/dist/db/workflow-queries.d.ts.map +1 -1
- package/dist/db/workflow-queries.js +24 -0
- package/dist/db/workflow-queries.js.map +1 -1
- package/dist/experiments/engine.d.ts.map +1 -1
- package/dist/experiments/engine.js +7 -2
- package/dist/experiments/engine.js.map +1 -1
- package/dist/forms/types.d.ts +5 -0
- package/dist/forms/types.d.ts.map +1 -1
- package/dist/forms/validation.d.ts +20 -0
- package/dist/forms/validation.d.ts.map +1 -1
- package/dist/forms/validation.js +45 -2
- package/dist/forms/validation.js.map +1 -1
- package/dist/hooks/ax-invalidation.d.ts.map +1 -1
- package/dist/hooks/ax-invalidation.js +1 -0
- package/dist/hooks/ax-invalidation.js.map +1 -1
- package/dist/hooks/dispatch.d.ts +1 -0
- package/dist/hooks/dispatch.d.ts.map +1 -1
- package/dist/hooks/dispatch.js +6 -0
- package/dist/hooks/dispatch.js.map +1 -1
- package/dist/hooks/webhook-dispatch.d.ts.map +1 -1
- package/dist/hooks/webhook-dispatch.js +1 -0
- package/dist/hooks/webhook-dispatch.js.map +1 -1
- package/dist/layout/index.d.ts +1 -1
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/renderer.d.ts +15 -2
- package/dist/layout/renderer.d.ts.map +1 -1
- package/dist/layout/renderer.js +49 -3
- package/dist/layout/renderer.js.map +1 -1
- package/dist/layout/types.d.ts +9 -0
- package/dist/layout/types.d.ts.map +1 -1
- package/dist/layout/types.js +5 -0
- package/dist/layout/types.js.map +1 -1
- package/dist/schema/base.d.ts +74 -0
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/base.js +16 -0
- package/dist/schema/base.js.map +1 -1
- package/dist/schema/content-permissions.d.ts.map +1 -1
- package/dist/schema/content-permissions.js +23 -2
- package/dist/schema/content-permissions.js.map +1 -1
- package/dist/schema/mapper.d.ts.map +1 -1
- package/dist/schema/mapper.js +1 -0
- package/dist/schema/mapper.js.map +1 -1
- package/dist/schema/mysql-tables.d.ts +68 -0
- package/dist/schema/mysql-tables.d.ts.map +1 -1
- package/dist/schema/mysql-tables.js +7 -0
- package/dist/schema/mysql-tables.js.map +1 -1
- package/dist/scope/kywi-form.d.ts.map +1 -1
- package/dist/scope/kywi-form.js +51 -6
- package/dist/scope/kywi-form.js.map +1 -1
- package/dist/scope/kywi-wizard-form.d.ts.map +1 -1
- package/dist/scope/kywi-wizard-form.js +29 -3
- package/dist/scope/kywi-wizard-form.js.map +1 -1
- package/dist/versioning/scheduler.d.ts +10 -2
- package/dist/versioning/scheduler.d.ts.map +1 -1
- package/dist/versioning/scheduler.js +13 -5
- package/dist/versioning/scheduler.js.map +1 -1
- package/package.json +12 -4
|
@@ -1,31 +1,130 @@
|
|
|
1
|
+
import { GraphQLError } from 'graphql';
|
|
1
2
|
import { getContentById, getContentBySlug, listContent } from '../../db/content-queries.js';
|
|
2
3
|
import { searchContent } from '../../db/search-queries.js';
|
|
3
4
|
import { listCategories } from '../../db/category-queries.js';
|
|
4
5
|
import { getNavContentForSite } from '../../db/tree-queries.js';
|
|
6
|
+
import { hasSiteAccess } from '../site-context.js';
|
|
7
|
+
/** True when the caller may see this site's non-published (draft) content. */
|
|
8
|
+
function canSeeDrafts(ctx, siteId) {
|
|
9
|
+
return !!ctx?.user && hasSiteAccess(ctx.user, siteId);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A content type is queryable through GraphQL only when its config explicitly
|
|
13
|
+
* sets `graphql: true` (#84). Absent flag, or `graphql: false`, both mean
|
|
14
|
+
* denied — this is a default-deny gate, not a passthrough.
|
|
15
|
+
*/
|
|
16
|
+
function isGraphQLEnabled(config, contentTypeName) {
|
|
17
|
+
const ct = config.contentTypes.find(c => c.name === contentTypeName);
|
|
18
|
+
return ct?.graphql === true;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Decide the effective status filter for a site-scoped query, mirroring the
|
|
22
|
+
* anonymous-caller rules in `search-routes.ts`:
|
|
23
|
+
* - `status: 'published'` (or any published-only request) is fully public.
|
|
24
|
+
* - Anonymous callers: an absent status silently narrows to 'published'; an
|
|
25
|
+
* EXPLICIT non-published status is a hard denial (GraphQL error), never a
|
|
26
|
+
* silently-swapped result.
|
|
27
|
+
* - Authenticated callers: any elevated (non-published or absent) status is
|
|
28
|
+
* additionally gated on membership of the query's `siteId`.
|
|
29
|
+
*
|
|
30
|
+
* Returns the status to filter by, or `undefined` for "no status filter" (all
|
|
31
|
+
* statuses visible — only reachable by a member requesting elevated access).
|
|
32
|
+
*/
|
|
33
|
+
function resolveStatusFilter(ctx, siteId, requested) {
|
|
34
|
+
// Published-only access is public — no auth required.
|
|
35
|
+
if (requested === 'published')
|
|
36
|
+
return 'published';
|
|
37
|
+
// Elevated (draft-visible) access requested from here on.
|
|
38
|
+
if (!ctx?.user) {
|
|
39
|
+
// Anonymous: an explicit non-published status is unauthorized; an absent
|
|
40
|
+
// status is narrowed to published rather than rejected.
|
|
41
|
+
if (requested !== undefined)
|
|
42
|
+
throw new GraphQLError('Unauthorized');
|
|
43
|
+
return 'published';
|
|
44
|
+
}
|
|
45
|
+
// Authenticated: elevated access requires membership of the target site.
|
|
46
|
+
if (!hasSiteAccess(ctx.user, siteId))
|
|
47
|
+
throw new GraphQLError('Unauthorized');
|
|
48
|
+
// Member: honour the request. `undefined` means no status filter (all rows).
|
|
49
|
+
return requested;
|
|
50
|
+
}
|
|
5
51
|
export function createResolvers(db, config) {
|
|
6
52
|
return {
|
|
7
|
-
content: async (_, args) =>
|
|
8
|
-
|
|
9
|
-
|
|
53
|
+
content: async (_, args, ctx) => {
|
|
54
|
+
// No siteId arg to pre-check against, so fetch then post-check: a
|
|
55
|
+
// non-published row is only visible to a caller with draft access for the
|
|
56
|
+
// row's own site.
|
|
57
|
+
const row = await getContentById(db, null, args.id);
|
|
58
|
+
if (!row)
|
|
59
|
+
return null;
|
|
60
|
+
if (!isGraphQLEnabled(config, row.contentTypeName))
|
|
61
|
+
return null;
|
|
62
|
+
if (row.status === 'published')
|
|
63
|
+
return row;
|
|
64
|
+
return canSeeDrafts(ctx, row.siteId) ? row : null;
|
|
65
|
+
},
|
|
66
|
+
contentBySlug: async (_, args, ctx) => {
|
|
67
|
+
const status = resolveStatusFilter(ctx, args.siteId, undefined);
|
|
68
|
+
const row = await getContentBySlug(db, null, args.slug, args.siteId, status ? { status } : undefined);
|
|
69
|
+
if (!row)
|
|
70
|
+
return null;
|
|
71
|
+
if (!isGraphQLEnabled(config, row.contentTypeName))
|
|
72
|
+
return null;
|
|
73
|
+
return row;
|
|
74
|
+
},
|
|
75
|
+
contentList: async (_, args, ctx) => {
|
|
10
76
|
const ct = config.contentTypes.find(c => c.name === args.contentType);
|
|
11
|
-
if (!ct)
|
|
12
|
-
|
|
77
|
+
if (!ct || !isGraphQLEnabled(config, args.contentType)) {
|
|
78
|
+
// Default-deny (#84): a missing/false `graphql` flag is a hard error,
|
|
79
|
+
// not silent emptiness — that silent-empty behavior was the bug.
|
|
80
|
+
throw new GraphQLError(`Content type "${args.contentType}" is not available via GraphQL`);
|
|
81
|
+
}
|
|
82
|
+
const status = resolveStatusFilter(ctx, args.siteId, args.status);
|
|
13
83
|
const page = args.page ?? 1;
|
|
14
84
|
const limit = args.limit ?? 10;
|
|
15
|
-
const { rows } = await listContent(db, ct, null, args.siteId, { page, limit, offset: (page - 1) * limit }, { sortField: 'createdAt', sortDir: 'desc' }, { customFields: {}, ...(
|
|
85
|
+
const { rows } = await listContent(db, ct, null, args.siteId, { page, limit, offset: (page - 1) * limit }, { sortField: 'createdAt', sortDir: 'desc' }, { customFields: {}, ...(status ? { status } : {}) });
|
|
16
86
|
return rows;
|
|
17
87
|
},
|
|
18
|
-
search: async (_, args) => {
|
|
88
|
+
search: async (_, args, ctx) => {
|
|
89
|
+
// #84: an explicit contentType arg naming a non-opted-in type is a hard
|
|
90
|
+
// error; with no arg, results are silently filtered to opted-in types
|
|
91
|
+
// rather than leaking every type's rows.
|
|
92
|
+
if (args.contentType && !isGraphQLEnabled(config, args.contentType)) {
|
|
93
|
+
throw new GraphQLError(`Content type "${args.contentType}" is not available via GraphQL`);
|
|
94
|
+
}
|
|
95
|
+
// The search schema exposes no `status` arg, so elevated access is always
|
|
96
|
+
// implicit — anonymous callers are confined to published, members may see
|
|
97
|
+
// drafts, non-members of the site are denied.
|
|
98
|
+
const status = resolveStatusFilter(ctx, args.siteId, undefined);
|
|
99
|
+
// Mirrors search-routes.ts (#82): an elevated (draft-visible) caller is
|
|
100
|
+
// an admin searching for content to edit, so it also sees rows marked
|
|
101
|
+
// excludeFromSearch; anonymous/public search never does.
|
|
102
|
+
const includeExcluded = canSeeDrafts(ctx, args.siteId);
|
|
19
103
|
const { results } = await searchContent(db, args.query, {
|
|
20
104
|
siteId: args.siteId,
|
|
21
105
|
contentType: args.contentType,
|
|
22
106
|
limit: args.limit,
|
|
107
|
+
status,
|
|
108
|
+
includeExcluded,
|
|
23
109
|
});
|
|
24
|
-
return results;
|
|
110
|
+
return results.filter(r => isGraphQLEnabled(config, r.contentTypeName));
|
|
25
111
|
},
|
|
112
|
+
// Categories are site taxonomy with no publication status column, so there
|
|
113
|
+
// is no draft/unpublished state to leak (audited for #79).
|
|
26
114
|
categories: async (_, args) => listCategories(db, args.siteId),
|
|
27
|
-
nav: async (_, args) =>
|
|
115
|
+
nav: async (_, args, ctx) => {
|
|
116
|
+
// `getNavContentForSite` returns every row regardless of status, which
|
|
117
|
+
// leaks draft titles/slugs/paths (#79). There is no status arg to reject,
|
|
118
|
+
// so post-filter: a caller without draft access for this site sees only
|
|
119
|
+
// published nodes.
|
|
120
|
+
const rows = await getNavContentForSite(db, args.siteId);
|
|
121
|
+
if (canSeeDrafts(ctx, args.siteId))
|
|
122
|
+
return rows;
|
|
123
|
+
return rows.filter(r => r.status === 'published');
|
|
124
|
+
},
|
|
28
125
|
media: async (_, args) => {
|
|
126
|
+
// Media rows carry no publication status column, so there is no draft
|
|
127
|
+
// state to leak here (audited for #79).
|
|
29
128
|
const { kywiMedia } = await import('../../schema/base.js');
|
|
30
129
|
const { eq } = await import('drizzle-orm');
|
|
31
130
|
const [row] = await db.select().from(kywiMedia).where(eq(kywiMedia.id, args.id)).limit(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../src/api/graphql/resolvers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../src/api/graphql/resolvers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { GraphQLSchema } from 'graphql';
|
|
2
2
|
import type { KywiConfig } from '../../config/types.js';
|
|
3
|
-
export declare function createGraphQLSchema(
|
|
3
|
+
export declare function createGraphQLSchema(config: KywiConfig): GraphQLSchema;
|
|
4
4
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/api/graphql/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAMd,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAgEvD,wBAAgB,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/api/graphql/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAMd,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAgEvD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,aAAa,CA8DrE"}
|
|
@@ -56,7 +56,18 @@ const SearchResultType = new GraphQLObjectType({
|
|
|
56
56
|
contentTypeName: { type: GraphQLString },
|
|
57
57
|
},
|
|
58
58
|
});
|
|
59
|
-
export function createGraphQLSchema(
|
|
59
|
+
export function createGraphQLSchema(config) {
|
|
60
|
+
// Content types opted into GraphQL (#84 — `graphql: true`, default-deny).
|
|
61
|
+
// Resolver-level enforcement is what actually denies a non-opted type
|
|
62
|
+
// (`resolvers.ts`); this only documents the opted-in set on the schema
|
|
63
|
+
// itself so introspection tells callers what's queryable instead of them
|
|
64
|
+
// discovering the allow-list by trial and error.
|
|
65
|
+
const enabledTypeNames = config.contentTypes
|
|
66
|
+
.filter(ct => ct.graphql === true)
|
|
67
|
+
.map(ct => ct.name);
|
|
68
|
+
const contentTypeArgDescription = enabledTypeNames.length > 0
|
|
69
|
+
? `Content type name. Available via GraphQL: ${enabledTypeNames.join(', ')}.`
|
|
70
|
+
: 'Content type name. No content types are currently opted into GraphQL (graphql: true).';
|
|
60
71
|
const queryType = new GraphQLObjectType({
|
|
61
72
|
name: 'Query',
|
|
62
73
|
fields: {
|
|
@@ -74,7 +85,7 @@ export function createGraphQLSchema(_config) {
|
|
|
74
85
|
contentList: {
|
|
75
86
|
type: new GraphQLList(ContentType),
|
|
76
87
|
args: {
|
|
77
|
-
contentType: { type: new GraphQLNonNull(GraphQLString) },
|
|
88
|
+
contentType: { type: new GraphQLNonNull(GraphQLString), description: contentTypeArgDescription },
|
|
78
89
|
siteId: { type: new GraphQLNonNull(GraphQLString) },
|
|
79
90
|
limit: { type: GraphQLInt },
|
|
80
91
|
page: { type: GraphQLInt },
|
|
@@ -86,7 +97,7 @@ export function createGraphQLSchema(_config) {
|
|
|
86
97
|
args: {
|
|
87
98
|
query: { type: new GraphQLNonNull(GraphQLString) },
|
|
88
99
|
siteId: { type: new GraphQLNonNull(GraphQLString) },
|
|
89
|
-
contentType: { type: GraphQLString },
|
|
100
|
+
contentType: { type: GraphQLString, description: contentTypeArgDescription },
|
|
90
101
|
limit: { type: GraphQLInt },
|
|
91
102
|
},
|
|
92
103
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/api/graphql/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/api/graphql/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group-routes.d.ts","sourceRoot":"","sources":["../../src/api/group-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"group-routes.d.ts","sourceRoot":"","sources":["../../src/api/group-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,oBAAoB,CAAA;AAiBjE,UAAU,iBAAiB;IACzB,MAAM,EAAE,UAAU,CAAA;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;CACnB;AAeD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,GAAG,IAAI,CA2KhF"}
|
package/dist/api/group-routes.js
CHANGED
|
@@ -4,6 +4,7 @@ import { listGroups, getGroupById, createGroup, updateGroup, deleteGroup, addUse
|
|
|
4
4
|
import { resolveAuth } from './auth.js';
|
|
5
5
|
import { hasMinRole } from '../auth/roles.js';
|
|
6
6
|
import { resolveSiteId } from '../db/site-queries.js';
|
|
7
|
+
import { assertSiteAccess } from './site-context.js';
|
|
7
8
|
const createGroupSchema = z.object({
|
|
8
9
|
name: z.string().min(1, 'Name is required'),
|
|
9
10
|
type: z.enum(['public', 'private']).optional(),
|
|
@@ -32,6 +33,9 @@ export function registerGroupRoutes(router, ctx) {
|
|
|
32
33
|
// The config `sites[0].id` is a human-readable slug (e.g. "default"), while
|
|
33
34
|
// group rows store the site's DB UUID. Resolve so seeded groups are found.
|
|
34
35
|
const siteId = (await resolveSiteId(db, requestedSiteId)) ?? requestedSiteId;
|
|
36
|
+
const siteDenied = assertSiteAccess(auth.user, siteId);
|
|
37
|
+
if (siteDenied)
|
|
38
|
+
return siteDenied;
|
|
35
39
|
const groups = await listGroups(db, siteId);
|
|
36
40
|
return jsonOk(groups);
|
|
37
41
|
});
|
|
@@ -56,6 +60,9 @@ export function registerGroupRoutes(router, ctx) {
|
|
|
56
60
|
const { name, type, defaultRole, siteId } = parsed.data;
|
|
57
61
|
const requestedSiteId = siteId ?? config.sites[0].id;
|
|
58
62
|
const resolvedSiteId = (await resolveSiteId(db, requestedSiteId)) ?? requestedSiteId;
|
|
63
|
+
const siteDenied = assertSiteAccess(auth.user, resolvedSiteId);
|
|
64
|
+
if (siteDenied)
|
|
65
|
+
return siteDenied;
|
|
59
66
|
const group = await createGroup(db, {
|
|
60
67
|
siteId: resolvedSiteId,
|
|
61
68
|
name,
|
|
@@ -95,6 +102,13 @@ export function registerGroupRoutes(router, ctx) {
|
|
|
95
102
|
return validationError(parsed.error.errors.map(e => ({ path: e.path.join('.'), message: e.message })));
|
|
96
103
|
}
|
|
97
104
|
const updateData = Object.fromEntries(Object.entries(parsed.data).filter(([, v]) => v !== undefined));
|
|
105
|
+
// #73: id-keyed mutation — authorize against the group's own site first.
|
|
106
|
+
const existing = await getGroupById(db, params.id);
|
|
107
|
+
if (!existing)
|
|
108
|
+
return notFound('Group not found');
|
|
109
|
+
const siteDenied = assertSiteAccess(auth.user, existing.siteId);
|
|
110
|
+
if (siteDenied)
|
|
111
|
+
return siteDenied;
|
|
98
112
|
const updated = await updateGroup(db, params.id, updateData);
|
|
99
113
|
if (!updated)
|
|
100
114
|
return notFound('Group not found');
|
|
@@ -107,6 +121,13 @@ export function registerGroupRoutes(router, ctx) {
|
|
|
107
121
|
return unauthorized();
|
|
108
122
|
if (!hasMinRole(auth.user.role, 'siteAdmin'))
|
|
109
123
|
return forbidden();
|
|
124
|
+
// #73: id-keyed mutation — authorize against the group's own site first.
|
|
125
|
+
const existing = await getGroupById(db, params.id);
|
|
126
|
+
if (!existing)
|
|
127
|
+
return notFound('Group not found');
|
|
128
|
+
const siteDenied = assertSiteAccess(auth.user, existing.siteId);
|
|
129
|
+
if (siteDenied)
|
|
130
|
+
return siteDenied;
|
|
110
131
|
const deleted = await deleteGroup(db, params.id);
|
|
111
132
|
if (!deleted)
|
|
112
133
|
return notFound('Group not found');
|
|
@@ -135,6 +156,9 @@ export function registerGroupRoutes(router, ctx) {
|
|
|
135
156
|
const group = await getGroupById(db, params.id);
|
|
136
157
|
if (!group)
|
|
137
158
|
return notFound('Group not found');
|
|
159
|
+
const siteDenied = assertSiteAccess(auth.user, group.siteId);
|
|
160
|
+
if (siteDenied)
|
|
161
|
+
return siteDenied;
|
|
138
162
|
await addUserToGroup(db, params.userId, params.id);
|
|
139
163
|
return jsonOk({ added: true });
|
|
140
164
|
});
|
|
@@ -148,6 +172,9 @@ export function registerGroupRoutes(router, ctx) {
|
|
|
148
172
|
const group = await getGroupById(db, params.id);
|
|
149
173
|
if (!group)
|
|
150
174
|
return notFound('Group not found');
|
|
175
|
+
const siteDenied = assertSiteAccess(auth.user, group.siteId);
|
|
176
|
+
if (siteDenied)
|
|
177
|
+
return siteDenied;
|
|
151
178
|
await removeUserFromGroup(db, params.userId, params.id);
|
|
152
179
|
return jsonOk({ removed: true });
|
|
153
180
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"group-routes.js","sourceRoot":"","sources":["../../src/api/group-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACrG,OAAO,EACL,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"group-routes.js","sourceRoot":"","sources":["../../src/api/group-routes.ts"],"names":[],"mappings":"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"}
|
package/dist/api/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ResourceBundles } from '../i18n/types.js';
|
|
2
|
+
import { type ResolveChangesetType } from '../db/changeset-queries.js';
|
|
2
3
|
import type { KywiConfig } from '../config/types.js';
|
|
3
4
|
import type { KywiDb } from '../db/client.js';
|
|
4
5
|
import type { StorageProvider } from '../media/types.js';
|
|
@@ -62,6 +63,14 @@ export interface KywiApiOptions {
|
|
|
62
63
|
}
|
|
63
64
|
export interface KywiApiHandler {
|
|
64
65
|
handle(req: Request, pathSegments: string[]): Promise<Response>;
|
|
66
|
+
/**
|
|
67
|
+
* The config-derived changeset type-resolver (#63). A host that starts an
|
|
68
|
+
* in-process scheduler has no access to the handler's contentTypeMap/
|
|
69
|
+
* customTableMap, so it cannot make scheduled changeset publishes round-trip
|
|
70
|
+
* custom fields on its own. Exposing the resolver lets a host wire it in:
|
|
71
|
+
* `startScheduler(db, { resolveType: handler.resolveChangesetType, … })`.
|
|
72
|
+
*/
|
|
73
|
+
resolveChangesetType: ResolveChangesetType;
|
|
65
74
|
}
|
|
66
75
|
export declare function createKywiApiHandler(options: KywiApiOptions): Promise<KywiApiHandler>;
|
|
67
76
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
package/dist/api/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Router } from './router.js';
|
|
2
|
+
import { resolveAuth } from './auth.js';
|
|
2
3
|
import { registerContentRoutes } from './content-routes.js';
|
|
3
4
|
import { registerSiteRoutes } from './site-routes.js';
|
|
4
5
|
import { registerAuthRoutes } from './auth-routes.js';
|
|
@@ -68,6 +69,7 @@ import { buildCustomFieldTable } from '../db/dynamic-schema.js';
|
|
|
68
69
|
import { loadAdminFields } from '../db/schema-field-queries.js';
|
|
69
70
|
import { loadAdminTypes } from '../db/content-type-queries.js';
|
|
70
71
|
import { resolveSiteId as resolveSiteIdFromDb } from '../db/site-queries.js';
|
|
72
|
+
import { buildChangesetTypeResolver } from '../db/changeset-queries.js';
|
|
71
73
|
export { Router } from './router.js';
|
|
72
74
|
export * from './response.js';
|
|
73
75
|
export * from './pagination.js';
|
|
@@ -166,6 +168,22 @@ export async function createKywiApiHandler(options) {
|
|
|
166
168
|
await cacheProvider.invalidatePattern(`nav:${siteId}:*`);
|
|
167
169
|
}
|
|
168
170
|
});
|
|
171
|
+
// Unpublish fires its own dedicated event (afterUpdate no longer fires on
|
|
172
|
+
// unpublish), so mirror the afterUpdate invalidation here — otherwise the
|
|
173
|
+
// public site keeps serving the just-unpublished node from stale cache.
|
|
174
|
+
hookRegistry.on('content:afterUnpublish', async (payload) => {
|
|
175
|
+
const p = payload;
|
|
176
|
+
const siteId = String(p.content.siteId ?? '');
|
|
177
|
+
const id = String(p.content.id ?? '');
|
|
178
|
+
const slug = p.content.slug ? String(p.content.slug) : undefined;
|
|
179
|
+
if (siteId && id) {
|
|
180
|
+
await cacheProvider.delete(contentKey(siteId, id));
|
|
181
|
+
if (slug)
|
|
182
|
+
await cacheProvider.delete(contentSlugKey(siteId, slug));
|
|
183
|
+
await cacheProvider.invalidatePattern(`feed:${siteId}:*`);
|
|
184
|
+
await cacheProvider.invalidatePattern(`nav:${siteId}:*`);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
169
187
|
hookRegistry.on('content:afterDelete', async (payload) => {
|
|
170
188
|
const p = payload;
|
|
171
189
|
const siteId = String(p.content.siteId ?? '');
|
|
@@ -336,7 +354,7 @@ export async function createKywiApiHandler(options) {
|
|
|
336
354
|
if (storage) {
|
|
337
355
|
registerMediaRoutes(router, { config, db, authSecret, storage });
|
|
338
356
|
}
|
|
339
|
-
registerFormRoutes(router, { config, db, authSecret, siteIdMap });
|
|
357
|
+
registerFormRoutes(router, { config, db, authSecret, siteIdMap, ...(storage ? { storage } : {}) });
|
|
340
358
|
registerSiteAdminRoutes(router, db, authSecret, hookRegistry);
|
|
341
359
|
registerAdminFeaturesRoutes(router, { config, db, authSecret });
|
|
342
360
|
registerDashboardRoutes(router, { config, db, authSecret, siteIdMap });
|
|
@@ -458,18 +476,28 @@ export async function createKywiApiHandler(options) {
|
|
|
458
476
|
db,
|
|
459
477
|
authSecret,
|
|
460
478
|
defaultSiteId: config.sites[0]?.id,
|
|
479
|
+
contentTypeMap,
|
|
480
|
+
customTableMap,
|
|
461
481
|
invalidateContent: invalidateContentCache,
|
|
462
482
|
});
|
|
463
483
|
// GAP-12-E: admin trigger for the background scheduler sweep (external cron).
|
|
464
|
-
|
|
484
|
+
// Maps let a scheduled changeset publish round-trip custom fields (#63).
|
|
485
|
+
registerSchedulerRoutes(router, { db, authSecret, contentTypeMap, customTableMap });
|
|
465
486
|
// Password reset routes
|
|
466
487
|
if (emailProvider) {
|
|
467
488
|
registerPasswordResetRoutes(router, { config, db, emailProvider });
|
|
468
489
|
}
|
|
469
|
-
// GraphQL read-only endpoint
|
|
490
|
+
// GraphQL read-only endpoint. Resolve auth from the Authorization header and
|
|
491
|
+
// hand the resolvers a per-request context (#79). A missing/invalid header
|
|
492
|
+
// yields an anonymous context (user: null) rather than a 401 — anonymous
|
|
493
|
+
// access to published content stays legal, matching GET /search?status=published;
|
|
494
|
+
// the resolvers default-deny draft content per caller.
|
|
470
495
|
const gqlSchema = createGraphQLSchema(config);
|
|
471
496
|
const gqlResolvers = createResolvers(db, config);
|
|
472
|
-
router.post('/graphql', async (req) =>
|
|
497
|
+
router.post('/graphql', async (req) => {
|
|
498
|
+
const auth = await resolveAuth(req.headers.get('authorization'), authSecret, db);
|
|
499
|
+
return handleGraphQLRequest(gqlSchema, gqlResolvers, req, { user: auth.user });
|
|
500
|
+
});
|
|
473
501
|
// Use the resolved site UUID (kywi_webhook_endpoints.siteId is a UUID FK) so
|
|
474
502
|
// webhook delivery matches endpoints correctly — a config slug would never match.
|
|
475
503
|
const webhookDispatchSiteId = config.sites[0]
|
|
@@ -496,6 +524,9 @@ export async function createKywiApiHandler(options) {
|
|
|
496
524
|
}
|
|
497
525
|
return response;
|
|
498
526
|
},
|
|
527
|
+
// Same live maps the changeset/scheduler routes use, so a host-started
|
|
528
|
+
// scheduler round-trips custom fields (#63) and reloads stay correct.
|
|
529
|
+
resolveChangesetType: buildChangesetTypeResolver(contentTypeMap, customTableMap),
|
|
499
530
|
};
|
|
500
531
|
}
|
|
501
532
|
//# sourceMappingURL=index.js.map
|
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-routes.d.ts","sourceRoot":"","sources":["../../src/api/layout-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAapD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,UAAU,GAClB,IAAI,
|
|
1
|
+
{"version":3,"file":"layout-routes.d.ts","sourceRoot":"","sources":["../../src/api/layout-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAapD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,UAAU,GAClB,IAAI,CA4HN"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsonOk, jsonError, notFound, unauthorized, forbidden } from './response.js';
|
|
2
2
|
import { resolveAuth } from './auth.js';
|
|
3
|
-
import { toSiteUuid } from './site-context.js';
|
|
3
|
+
import { toSiteUuid, assertSiteAccess } from './site-context.js';
|
|
4
4
|
import { canAccessContent, hasMinRole } from '../auth/roles.js';
|
|
5
5
|
import { getContentLayout, setContentLayout } from '../db/layout-queries.js';
|
|
6
6
|
import { validateLayoutDocument } from '../layout/types.js';
|
|
@@ -58,6 +58,13 @@ export function registerLayoutRoutes(router, db, authSecret, config) {
|
|
|
58
58
|
return jsonError('VALIDATION_ERROR', result.error, 400);
|
|
59
59
|
}
|
|
60
60
|
const siteId = await resolveSite(req);
|
|
61
|
+
// Site scoping is skipped for legacy callers that supplied no config (siteId
|
|
62
|
+
// undefined); when we do have a resolved site, confine to the caller's sites.
|
|
63
|
+
if (siteId) {
|
|
64
|
+
const siteDenied = assertSiteAccess(auth.user, siteId);
|
|
65
|
+
if (siteDenied)
|
|
66
|
+
return siteDenied;
|
|
67
|
+
}
|
|
61
68
|
const stored = await getContentLayout(db, params.id, siteId);
|
|
62
69
|
const moduleDenied = rejectNewAdminOnlyModules(auth.user.role, result.data, stored);
|
|
63
70
|
if (moduleDenied)
|
|
@@ -95,6 +102,11 @@ export function registerLayoutRoutes(router, db, authSecret, config) {
|
|
|
95
102
|
}
|
|
96
103
|
// Merge into existing layout
|
|
97
104
|
const siteId = await resolveSite(req);
|
|
105
|
+
if (siteId) {
|
|
106
|
+
const siteDenied = assertSiteAccess(auth.user, siteId);
|
|
107
|
+
if (siteDenied)
|
|
108
|
+
return siteDenied;
|
|
109
|
+
}
|
|
98
110
|
const existing = await getContentLayout(db, params.id, siteId) ?? { regions: {} };
|
|
99
111
|
const merged = {
|
|
100
112
|
regions: {
|