@actuate-media/cms-core 0.4.0 → 0.7.0
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/actions.d.ts.map +1 -1
- package/dist/actions.js +22 -18
- package/dist/actions.js.map +1 -1
- package/dist/api/handlers.d.ts.map +1 -1
- package/dist/api/handlers.js +398 -27
- package/dist/api/handlers.js.map +1 -1
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/reset-email.d.ts +10 -0
- package/dist/auth/reset-email.d.ts.map +1 -0
- package/dist/auth/reset-email.js +30 -0
- package/dist/auth/reset-email.js.map +1 -0
- package/dist/auth/reset.d.ts +35 -0
- package/dist/auth/reset.d.ts.map +1 -0
- package/dist/auth/reset.js +83 -0
- package/dist/auth/reset.js.map +1 -0
- package/dist/client.d.ts +17 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -0
- package/dist/client.js.map +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +10 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/types.d.ts +16 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/security/access.js +1 -1
- package/dist/security/access.js.map +1 -1
- package/package.json +1 -1
- package/prisma/migrations/0004_script_tags/migration.sql +21 -0
- package/prisma/migrations/0005_password_reset_tokens/migration.sql +20 -0
- package/prisma/schema.prisma +44 -11
package/dist/actions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AA8FD,6CAA6C;AAC7C,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA4ClC;AAED,6FAA6F;AAC7F,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8DlC;AAED,0EAA0E;AAC1E,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,IAAI,CAAC,CAgCf;
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,EAAE,EAAE,OAAO,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AA8FD,6CAA6C;AAC7C,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA4ClC;AAED,6FAA6F;AAC7F,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8DlC;AAED,0EAA0E;AAC1E,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,IAAI,CAAC,CAgCf;AAOD,wCAAwC;AACxC,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAoBzC;AAED,8DAA8D;AAC9D,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,UAAU,CAAC,CAgFrB;AAED,2FAA2F;AAC3F,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAsDlC;AAED,4FAA4F;AAC5F,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAMzC;AAED,iFAAiF;AACjF,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyDlC"}
|
package/dist/actions.js
CHANGED
|
@@ -196,6 +196,10 @@ export async function deleteDocument(collection, id, ctx) {
|
|
|
196
196
|
fireWebhook('document.deleted', { id, collection, title: existing.title, slug: existing.slug });
|
|
197
197
|
});
|
|
198
198
|
}
|
|
199
|
+
function stripInternalKeys(data) {
|
|
200
|
+
const { _layout, ...rest } = data;
|
|
201
|
+
return rest;
|
|
202
|
+
}
|
|
199
203
|
/** Retrieve a single document by ID. */
|
|
200
204
|
export async function getDocument(collection, id, ctx) {
|
|
201
205
|
const db = prisma(ctx);
|
|
@@ -204,13 +208,14 @@ export async function getDocument(collection, id, ctx) {
|
|
|
204
208
|
});
|
|
205
209
|
if (!doc)
|
|
206
210
|
return null;
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
const
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
data
|
|
213
|
-
}
|
|
211
|
+
if (doc.data && typeof doc.data === "object") {
|
|
212
|
+
let data = stripInternalKeys(doc.data);
|
|
213
|
+
const fields = getCollectionFields(collection);
|
|
214
|
+
if (fields) {
|
|
215
|
+
const user = { id: ctx.userId, role: ctx.role };
|
|
216
|
+
data = await applyFieldAccess("read", fields, data, user);
|
|
217
|
+
}
|
|
218
|
+
return { ...doc, data };
|
|
214
219
|
}
|
|
215
220
|
return doc;
|
|
216
221
|
}
|
|
@@ -263,18 +268,17 @@ export async function listDocuments(options, ctx) {
|
|
|
263
268
|
]);
|
|
264
269
|
const fields = getCollectionFields(options.collection);
|
|
265
270
|
let docs = rawDocs;
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
data: await applyFieldAccess("read", fields, doc.data, user),
|
|
273
|
-
};
|
|
271
|
+
const user = { id: ctx.userId, role: ctx.role };
|
|
272
|
+
docs = await Promise.all(rawDocs.map(async (doc) => {
|
|
273
|
+
if (doc.data && typeof doc.data === "object") {
|
|
274
|
+
let data = stripInternalKeys(doc.data);
|
|
275
|
+
if (fields) {
|
|
276
|
+
data = await applyFieldAccess("read", fields, data, user);
|
|
274
277
|
}
|
|
275
|
-
return doc;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
+
return { ...doc, data };
|
|
279
|
+
}
|
|
280
|
+
return doc;
|
|
281
|
+
}));
|
|
278
282
|
return {
|
|
279
283
|
docs,
|
|
280
284
|
total,
|
package/dist/actions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/api/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/api/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAmN7C,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS9E;AAiED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAm9FzD"}
|
package/dist/api/handlers.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { listDocuments, getDocument, createDocument, updateDocument, deleteDocument, getGlobal, updateGlobal, } from '../actions.js';
|
|
2
2
|
import { verifyPassword } from '../auth/password.js';
|
|
3
3
|
import { createSession, verifySession, revokeSession } from '../auth/session.js';
|
|
4
|
+
import { createPasswordReset, executePasswordReset } from '../auth/reset.js';
|
|
4
5
|
import { checkSetupRequired, createInitialAdmin } from '../setup/index.js';
|
|
5
6
|
import { getDB } from '../db.js';
|
|
6
7
|
import { generateCodeVerifier, generateCodeChallenge, generateState, getAuthorizationUrl, handleOAuthCallback, } from '../auth/oauth.js';
|
|
@@ -460,6 +461,70 @@ export function registerCMSRoutes(router) {
|
|
|
460
461
|
return internalError(err, 'logout');
|
|
461
462
|
}
|
|
462
463
|
});
|
|
464
|
+
router.post('/auth/forgot-password', async (request) => {
|
|
465
|
+
try {
|
|
466
|
+
const body = await request.json();
|
|
467
|
+
const { email } = body;
|
|
468
|
+
if (!email) {
|
|
469
|
+
return errorResponse('Email is required', 400);
|
|
470
|
+
}
|
|
471
|
+
const clientIp = request.headers.get('x-forwarded-for')?.split(',')[0]?.trim() ?? 'unknown';
|
|
472
|
+
if (!(await checkRateLimitAsync(loginLimiter, `forgot:${clientIp}`))) {
|
|
473
|
+
return errorResponse('Too many requests. Please try again later.', 429);
|
|
474
|
+
}
|
|
475
|
+
const d = db();
|
|
476
|
+
if (!hasModel(d, 'user'))
|
|
477
|
+
return modelNotAvailable('user');
|
|
478
|
+
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL ?? new URL(request.url).origin;
|
|
479
|
+
const cmsConfig = globalThis.__actuateConfig;
|
|
480
|
+
await createPasswordReset(d, email.toLowerCase().trim(), {
|
|
481
|
+
siteUrl,
|
|
482
|
+
platform: cmsConfig?.platform,
|
|
483
|
+
});
|
|
484
|
+
await logEvent({
|
|
485
|
+
event: 'password_reset_request',
|
|
486
|
+
ipAddress: clientIp,
|
|
487
|
+
userAgent: request.headers.get('user-agent') ?? undefined,
|
|
488
|
+
details: { email: email.toLowerCase().trim() },
|
|
489
|
+
});
|
|
490
|
+
return json({ data: { success: true } });
|
|
491
|
+
}
|
|
492
|
+
catch (err) {
|
|
493
|
+
return internalError(err, 'forgot-password');
|
|
494
|
+
}
|
|
495
|
+
});
|
|
496
|
+
router.post('/auth/reset-password', async (request) => {
|
|
497
|
+
try {
|
|
498
|
+
const body = await request.json();
|
|
499
|
+
const { token, password } = body;
|
|
500
|
+
if (!token || !password) {
|
|
501
|
+
return errorResponse('Token and new password are required', 400);
|
|
502
|
+
}
|
|
503
|
+
if (password.length < 8) {
|
|
504
|
+
return errorResponse('Password must be at least 8 characters', 400);
|
|
505
|
+
}
|
|
506
|
+
const clientIp = request.headers.get('x-forwarded-for')?.split(',')[0]?.trim() ?? 'unknown';
|
|
507
|
+
if (!(await checkRateLimitAsync(loginLimiter, `reset:${clientIp}`))) {
|
|
508
|
+
return errorResponse('Too many requests. Please try again later.', 429);
|
|
509
|
+
}
|
|
510
|
+
const d = db();
|
|
511
|
+
if (!hasModel(d, 'user'))
|
|
512
|
+
return modelNotAvailable('user');
|
|
513
|
+
const result = await executePasswordReset(d, token, password);
|
|
514
|
+
if (!result.success) {
|
|
515
|
+
return errorResponse(result.error ?? 'Password reset failed', 400);
|
|
516
|
+
}
|
|
517
|
+
await logEvent({
|
|
518
|
+
event: 'password_reset_complete',
|
|
519
|
+
ipAddress: clientIp,
|
|
520
|
+
userAgent: request.headers.get('user-agent') ?? undefined,
|
|
521
|
+
});
|
|
522
|
+
return json({ data: { success: true } });
|
|
523
|
+
}
|
|
524
|
+
catch (err) {
|
|
525
|
+
return internalError(err, 'reset-password');
|
|
526
|
+
}
|
|
527
|
+
});
|
|
463
528
|
router.get('/auth/me', async (request) => {
|
|
464
529
|
try {
|
|
465
530
|
const auth = await requireAuth(request);
|
|
@@ -2117,6 +2182,93 @@ export function registerCMSRoutes(router) {
|
|
|
2117
2182
|
// ---------------------------------------------------------------------------
|
|
2118
2183
|
// URL Resolution — maps a public URL path to its document
|
|
2119
2184
|
// ---------------------------------------------------------------------------
|
|
2185
|
+
const MAX_RESOLVE_DEPTH = 10;
|
|
2186
|
+
async function resolveLayout(path, docData, matchedCollection) {
|
|
2187
|
+
const config = globalThis.__actuateConfig;
|
|
2188
|
+
const layoutConfig = config?.layout;
|
|
2189
|
+
if (!layoutConfig?.regions)
|
|
2190
|
+
return {};
|
|
2191
|
+
const regionNames = Object.keys(layoutConfig.regions);
|
|
2192
|
+
if (regionNames.length === 0)
|
|
2193
|
+
return {};
|
|
2194
|
+
const allowedCollections = new Set();
|
|
2195
|
+
for (const region of regionNames) {
|
|
2196
|
+
const col = layoutConfig.regions[region]?.collection;
|
|
2197
|
+
if (col)
|
|
2198
|
+
allowedCollections.add(col);
|
|
2199
|
+
}
|
|
2200
|
+
const resolved = {};
|
|
2201
|
+
const unresolved = new Set(regionNames);
|
|
2202
|
+
const docLayout = (docData?._layout ?? {});
|
|
2203
|
+
for (const region of regionNames) {
|
|
2204
|
+
if (docLayout[region] && typeof docLayout[region] === 'string') {
|
|
2205
|
+
resolved[region] = docLayout[region];
|
|
2206
|
+
unresolved.delete(region);
|
|
2207
|
+
}
|
|
2208
|
+
}
|
|
2209
|
+
if (unresolved.size > 0 && layoutConfig.inherit !== false) {
|
|
2210
|
+
const segments = path.replace(/^\/|\/$/g, '').split('/').filter(Boolean);
|
|
2211
|
+
const walkDepth = Math.min(segments.length - 1, MAX_RESOLVE_DEPTH);
|
|
2212
|
+
for (let i = walkDepth; i > 0 && unresolved.size > 0; i--) {
|
|
2213
|
+
const parentSlug = segments.slice(0, i).join('/');
|
|
2214
|
+
const parentDoc = await db().document.findFirst({
|
|
2215
|
+
where: {
|
|
2216
|
+
collection: matchedCollection,
|
|
2217
|
+
deletedAt: null,
|
|
2218
|
+
status: 'PUBLISHED',
|
|
2219
|
+
OR: [
|
|
2220
|
+
{ data: { path: ['slug'], equals: parentSlug } },
|
|
2221
|
+
{ slug: parentSlug },
|
|
2222
|
+
],
|
|
2223
|
+
},
|
|
2224
|
+
select: { data: true },
|
|
2225
|
+
});
|
|
2226
|
+
if (!parentDoc)
|
|
2227
|
+
continue;
|
|
2228
|
+
const parentLayout = (parentDoc.data?._layout ?? {});
|
|
2229
|
+
for (const region of [...unresolved]) {
|
|
2230
|
+
if (parentLayout[region] && typeof parentLayout[region] === 'string') {
|
|
2231
|
+
resolved[region] = parentLayout[region];
|
|
2232
|
+
unresolved.delete(region);
|
|
2233
|
+
}
|
|
2234
|
+
}
|
|
2235
|
+
}
|
|
2236
|
+
}
|
|
2237
|
+
const settingsGlobal = await db().document.findFirst({
|
|
2238
|
+
where: { collection: 'settings', deletedAt: null },
|
|
2239
|
+
select: { data: true },
|
|
2240
|
+
});
|
|
2241
|
+
const settingsDefaults = (settingsGlobal?.data?.defaultLayout ?? {});
|
|
2242
|
+
for (const region of [...unresolved]) {
|
|
2243
|
+
const fallback = layoutConfig.defaults?.[region] ?? settingsDefaults[region];
|
|
2244
|
+
if (fallback && typeof fallback === 'string') {
|
|
2245
|
+
resolved[region] = fallback;
|
|
2246
|
+
unresolved.delete(region);
|
|
2247
|
+
}
|
|
2248
|
+
}
|
|
2249
|
+
if (Object.keys(resolved).length === 0)
|
|
2250
|
+
return {};
|
|
2251
|
+
const variantIds = [...new Set(Object.values(resolved))];
|
|
2252
|
+
const allowedCollectionList = [...allowedCollections];
|
|
2253
|
+
const variants = await db().document.findMany({
|
|
2254
|
+
where: {
|
|
2255
|
+
id: { in: variantIds },
|
|
2256
|
+
collection: { in: allowedCollectionList },
|
|
2257
|
+
status: 'PUBLISHED',
|
|
2258
|
+
deletedAt: null,
|
|
2259
|
+
},
|
|
2260
|
+
});
|
|
2261
|
+
const variantMap = new Map(variants.map((v) => [v.id, v]));
|
|
2262
|
+
const result = {};
|
|
2263
|
+
for (const [region, docId] of Object.entries(resolved)) {
|
|
2264
|
+
const expectedCollection = layoutConfig.regions[region]?.collection;
|
|
2265
|
+
const variant = variantMap.get(docId);
|
|
2266
|
+
if (variant && variant.collection === expectedCollection) {
|
|
2267
|
+
result[region] = { id: variant.id, collection: variant.collection, data: variant.data };
|
|
2268
|
+
}
|
|
2269
|
+
}
|
|
2270
|
+
return result;
|
|
2271
|
+
}
|
|
2120
2272
|
router.get('/resolve', async (request) => {
|
|
2121
2273
|
try {
|
|
2122
2274
|
const url = new URL(request.url);
|
|
@@ -2125,63 +2277,80 @@ export function registerCMSRoutes(router) {
|
|
|
2125
2277
|
return errorResponse('Missing required "path" query parameter', 400);
|
|
2126
2278
|
}
|
|
2127
2279
|
const segments = pathParam.replace(/^\/|\/$/g, '').split('/').filter(Boolean);
|
|
2128
|
-
if (segments.length === 0) {
|
|
2129
|
-
return errorResponse('Empty path', 400);
|
|
2130
|
-
}
|
|
2131
2280
|
const configCollections = globalThis.__actuateConfig?.collections ?? {};
|
|
2132
2281
|
const collectionDefs = Object.values(configCollections);
|
|
2133
2282
|
let matchedCollection = null;
|
|
2134
2283
|
let docSlug = null;
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2284
|
+
if (segments.length === 0) {
|
|
2285
|
+
// Root path — find a page-type collection and look for "home" or "index"
|
|
2286
|
+
const pageCol = collectionDefs.find((c) => c.type === 'page' && !((c.urlPrefix ?? '').replace(/^\/|\/$/g, '')));
|
|
2287
|
+
matchedCollection = pageCol?.slug ?? 'pages';
|
|
2288
|
+
docSlug = 'home';
|
|
2289
|
+
}
|
|
2290
|
+
else {
|
|
2291
|
+
for (const col of collectionDefs) {
|
|
2292
|
+
const prefix = (col.urlPrefix ?? col.slug ?? '').replace(/^\/|\/$/g, '');
|
|
2293
|
+
if (prefix && segments.length >= 2) {
|
|
2294
|
+
const prefixParts = prefix.split('/');
|
|
2295
|
+
const pathPrefix = segments.slice(0, prefixParts.length).join('/');
|
|
2296
|
+
if (pathPrefix === prefix) {
|
|
2297
|
+
matchedCollection = col.slug;
|
|
2298
|
+
docSlug = segments.slice(prefixParts.length).join('/');
|
|
2299
|
+
break;
|
|
2300
|
+
}
|
|
2301
|
+
}
|
|
2302
|
+
else if (!prefix && col.type === 'page') {
|
|
2141
2303
|
matchedCollection = col.slug;
|
|
2142
|
-
docSlug = segments.
|
|
2143
|
-
break;
|
|
2304
|
+
docSlug = segments.join('/');
|
|
2144
2305
|
}
|
|
2145
2306
|
}
|
|
2146
|
-
|
|
2147
|
-
matchedCollection =
|
|
2148
|
-
docSlug = segments
|
|
2307
|
+
if (!matchedCollection && segments.length === 1) {
|
|
2308
|
+
matchedCollection = 'pages';
|
|
2309
|
+
docSlug = segments[0];
|
|
2310
|
+
}
|
|
2311
|
+
if (!matchedCollection && segments.length >= 2) {
|
|
2312
|
+
matchedCollection = segments[0];
|
|
2313
|
+
docSlug = segments.slice(1).join('/');
|
|
2149
2314
|
}
|
|
2150
|
-
}
|
|
2151
|
-
if (!matchedCollection && segments.length === 1) {
|
|
2152
|
-
matchedCollection = 'pages';
|
|
2153
|
-
docSlug = segments[0];
|
|
2154
|
-
}
|
|
2155
|
-
if (!matchedCollection && segments.length >= 2) {
|
|
2156
|
-
matchedCollection = segments[0];
|
|
2157
|
-
docSlug = segments.slice(1).join('/');
|
|
2158
2315
|
}
|
|
2159
2316
|
if (!matchedCollection || !docSlug) {
|
|
2160
2317
|
return errorResponse('Could not resolve path', 404);
|
|
2161
2318
|
}
|
|
2319
|
+
const isRootPath = segments.length === 0;
|
|
2162
2320
|
const doc = await db().document.findFirst({
|
|
2163
2321
|
where: {
|
|
2164
2322
|
collection: matchedCollection,
|
|
2165
2323
|
deletedAt: null,
|
|
2166
2324
|
status: 'PUBLISHED',
|
|
2167
|
-
OR:
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2325
|
+
OR: isRootPath
|
|
2326
|
+
? [
|
|
2327
|
+
{ data: { path: ['slug'], equals: 'home' } },
|
|
2328
|
+
{ data: { path: ['slug'], equals: 'index' } },
|
|
2329
|
+
{ slug: 'home' },
|
|
2330
|
+
{ slug: 'index' },
|
|
2331
|
+
]
|
|
2332
|
+
: [
|
|
2333
|
+
{ data: { path: ['slug'], equals: docSlug } },
|
|
2334
|
+
{ slug: docSlug },
|
|
2335
|
+
],
|
|
2171
2336
|
},
|
|
2172
2337
|
});
|
|
2173
2338
|
if (!doc) {
|
|
2174
2339
|
return errorResponse('Document not found', 404);
|
|
2175
2340
|
}
|
|
2341
|
+
const docData = (doc.data && typeof doc.data === 'object') ? doc.data : {};
|
|
2342
|
+
const layout = await resolveLayout(pathParam, docData, matchedCollection);
|
|
2343
|
+
const { _layout: _omit, ...cleanData } = docData;
|
|
2176
2344
|
return json({
|
|
2177
2345
|
data: {
|
|
2178
2346
|
id: doc.id,
|
|
2179
2347
|
collection: doc.collection,
|
|
2180
|
-
data:
|
|
2348
|
+
data: cleanData,
|
|
2181
2349
|
status: doc.status,
|
|
2182
2350
|
publishedAt: doc.publishedAt,
|
|
2183
2351
|
structuredData: doc.structuredData,
|
|
2184
2352
|
},
|
|
2353
|
+
...(Object.keys(layout).length > 0 ? { layout } : {}),
|
|
2185
2354
|
});
|
|
2186
2355
|
}
|
|
2187
2356
|
catch (err) {
|
|
@@ -2656,6 +2825,208 @@ export function registerCMSRoutes(router) {
|
|
|
2656
2825
|
}
|
|
2657
2826
|
});
|
|
2658
2827
|
// ---------------------------------------------------------------------------
|
|
2828
|
+
// Script Tags
|
|
2829
|
+
// ---------------------------------------------------------------------------
|
|
2830
|
+
router.get('/script-tags/resolve', async (request) => {
|
|
2831
|
+
try {
|
|
2832
|
+
const d = db();
|
|
2833
|
+
if (!hasModel(d, 'scriptTag'))
|
|
2834
|
+
return modelNotAvailable('ScriptTag');
|
|
2835
|
+
const url = new URL(request.url);
|
|
2836
|
+
const pathParam = url.searchParams.get('path') ?? '/';
|
|
2837
|
+
const normalizedPath = '/' + pathParam.replace(/^\/|\/$/g, '');
|
|
2838
|
+
const tags = await d.scriptTag.findMany({
|
|
2839
|
+
where: { enabled: true },
|
|
2840
|
+
orderBy: { priority: 'asc' },
|
|
2841
|
+
});
|
|
2842
|
+
const matched = [];
|
|
2843
|
+
for (const tag of tags) {
|
|
2844
|
+
if (tag.scope === 'site') {
|
|
2845
|
+
matched.push(tag);
|
|
2846
|
+
continue;
|
|
2847
|
+
}
|
|
2848
|
+
if (tag.scope === 'parents' && Array.isArray(tag.targetPaths)) {
|
|
2849
|
+
for (const target of tag.targetPaths) {
|
|
2850
|
+
const norm = '/' + target.replace(/^\/|\/$/g, '');
|
|
2851
|
+
if (normalizedPath === norm || normalizedPath.startsWith(norm + '/')) {
|
|
2852
|
+
matched.push(tag);
|
|
2853
|
+
break;
|
|
2854
|
+
}
|
|
2855
|
+
}
|
|
2856
|
+
continue;
|
|
2857
|
+
}
|
|
2858
|
+
if (tag.scope === 'urls' && Array.isArray(tag.targetPaths)) {
|
|
2859
|
+
for (const target of tag.targetPaths) {
|
|
2860
|
+
const norm = '/' + target.replace(/^\/|\/$/g, '');
|
|
2861
|
+
if (normalizedPath === norm) {
|
|
2862
|
+
matched.push(tag);
|
|
2863
|
+
break;
|
|
2864
|
+
}
|
|
2865
|
+
}
|
|
2866
|
+
}
|
|
2867
|
+
}
|
|
2868
|
+
const grouped = { head: [], body_open: [], body_close: [] };
|
|
2869
|
+
for (const tag of matched) {
|
|
2870
|
+
const bucket = grouped[tag.placement];
|
|
2871
|
+
if (bucket) {
|
|
2872
|
+
bucket.push(tag.code);
|
|
2873
|
+
}
|
|
2874
|
+
}
|
|
2875
|
+
return json(grouped);
|
|
2876
|
+
}
|
|
2877
|
+
catch (err) {
|
|
2878
|
+
return internalError(err, 'script-tags/resolve');
|
|
2879
|
+
}
|
|
2880
|
+
});
|
|
2881
|
+
router.get('/script-tags', async (request) => {
|
|
2882
|
+
try {
|
|
2883
|
+
const auth = await requireAuth(request);
|
|
2884
|
+
if (auth.error)
|
|
2885
|
+
return auth.error;
|
|
2886
|
+
const roleErr = requireRole(auth.session.role, ADMIN_ROLES);
|
|
2887
|
+
if (roleErr)
|
|
2888
|
+
return roleErr;
|
|
2889
|
+
const d = db();
|
|
2890
|
+
if (!hasModel(d, 'scriptTag'))
|
|
2891
|
+
return modelNotAvailable('ScriptTag');
|
|
2892
|
+
const tags = await d.scriptTag.findMany({
|
|
2893
|
+
orderBy: { priority: 'asc' },
|
|
2894
|
+
});
|
|
2895
|
+
return json({ data: tags });
|
|
2896
|
+
}
|
|
2897
|
+
catch (err) {
|
|
2898
|
+
return internalError(err, 'script-tags list');
|
|
2899
|
+
}
|
|
2900
|
+
});
|
|
2901
|
+
router.post('/script-tags', async (request) => {
|
|
2902
|
+
try {
|
|
2903
|
+
const auth = await requireAuth(request);
|
|
2904
|
+
if (auth.error)
|
|
2905
|
+
return auth.error;
|
|
2906
|
+
const roleErr = requireRole(auth.session.role, ADMIN_ROLES);
|
|
2907
|
+
if (roleErr)
|
|
2908
|
+
return roleErr;
|
|
2909
|
+
const d = db();
|
|
2910
|
+
if (!hasModel(d, 'scriptTag'))
|
|
2911
|
+
return modelNotAvailable('ScriptTag');
|
|
2912
|
+
const body = await request.json();
|
|
2913
|
+
if (!body.name || !body.code || !body.placement) {
|
|
2914
|
+
return errorResponse('name, code, and placement are required', 400);
|
|
2915
|
+
}
|
|
2916
|
+
const validPlacements = ['head', 'body_open', 'body_close'];
|
|
2917
|
+
if (!validPlacements.includes(body.placement)) {
|
|
2918
|
+
return errorResponse('placement must be head, body_open, or body_close', 400);
|
|
2919
|
+
}
|
|
2920
|
+
const validScopes = ['site', 'parents', 'urls'];
|
|
2921
|
+
const scope = body.scope || 'site';
|
|
2922
|
+
if (!validScopes.includes(scope)) {
|
|
2923
|
+
return errorResponse('scope must be site, parents, or urls', 400);
|
|
2924
|
+
}
|
|
2925
|
+
const tag = await d.scriptTag.create({
|
|
2926
|
+
data: {
|
|
2927
|
+
name: body.name,
|
|
2928
|
+
code: body.code,
|
|
2929
|
+
placement: body.placement,
|
|
2930
|
+
scope,
|
|
2931
|
+
targetPaths: Array.isArray(body.targetPaths) ? body.targetPaths : [],
|
|
2932
|
+
priority: typeof body.priority === 'number' ? body.priority : 100,
|
|
2933
|
+
enabled: body.enabled !== false,
|
|
2934
|
+
},
|
|
2935
|
+
});
|
|
2936
|
+
await logEvent({
|
|
2937
|
+
event: 'settings_changed',
|
|
2938
|
+
userId: auth.session.userId,
|
|
2939
|
+
details: { action: 'script_tag_created', tagId: tag.id, name: tag.name },
|
|
2940
|
+
});
|
|
2941
|
+
return json({ data: tag }, 201);
|
|
2942
|
+
}
|
|
2943
|
+
catch (err) {
|
|
2944
|
+
return internalError(err, 'script-tags create');
|
|
2945
|
+
}
|
|
2946
|
+
});
|
|
2947
|
+
router.put('/script-tags/:id', async (request, params) => {
|
|
2948
|
+
try {
|
|
2949
|
+
const auth = await requireAuth(request);
|
|
2950
|
+
if (auth.error)
|
|
2951
|
+
return auth.error;
|
|
2952
|
+
const roleErr = requireRole(auth.session.role, ADMIN_ROLES);
|
|
2953
|
+
if (roleErr)
|
|
2954
|
+
return roleErr;
|
|
2955
|
+
const d = db();
|
|
2956
|
+
if (!hasModel(d, 'scriptTag'))
|
|
2957
|
+
return modelNotAvailable('ScriptTag');
|
|
2958
|
+
const existing = await d.scriptTag.findUnique({ where: { id: params.id } });
|
|
2959
|
+
if (!existing)
|
|
2960
|
+
return errorResponse('Script tag not found', 404);
|
|
2961
|
+
const body = await request.json();
|
|
2962
|
+
const update = {};
|
|
2963
|
+
if (body.name !== undefined)
|
|
2964
|
+
update.name = body.name;
|
|
2965
|
+
if (body.code !== undefined)
|
|
2966
|
+
update.code = body.code;
|
|
2967
|
+
if (body.placement !== undefined) {
|
|
2968
|
+
const validPlacements = ['head', 'body_open', 'body_close'];
|
|
2969
|
+
if (!validPlacements.includes(body.placement)) {
|
|
2970
|
+
return errorResponse('placement must be head, body_open, or body_close', 400);
|
|
2971
|
+
}
|
|
2972
|
+
update.placement = body.placement;
|
|
2973
|
+
}
|
|
2974
|
+
if (body.scope !== undefined) {
|
|
2975
|
+
const validScopes = ['site', 'parents', 'urls'];
|
|
2976
|
+
if (!validScopes.includes(body.scope)) {
|
|
2977
|
+
return errorResponse('scope must be site, parents, or urls', 400);
|
|
2978
|
+
}
|
|
2979
|
+
update.scope = body.scope;
|
|
2980
|
+
}
|
|
2981
|
+
if (body.targetPaths !== undefined) {
|
|
2982
|
+
update.targetPaths = Array.isArray(body.targetPaths) ? body.targetPaths : [];
|
|
2983
|
+
}
|
|
2984
|
+
if (typeof body.priority === 'number')
|
|
2985
|
+
update.priority = body.priority;
|
|
2986
|
+
if (typeof body.enabled === 'boolean')
|
|
2987
|
+
update.enabled = body.enabled;
|
|
2988
|
+
const tag = await d.scriptTag.update({
|
|
2989
|
+
where: { id: params.id },
|
|
2990
|
+
data: update,
|
|
2991
|
+
});
|
|
2992
|
+
await logEvent({
|
|
2993
|
+
event: 'settings_changed',
|
|
2994
|
+
userId: auth.session.userId,
|
|
2995
|
+
details: { action: 'script_tag_updated', tagId: tag.id, name: tag.name },
|
|
2996
|
+
});
|
|
2997
|
+
return json({ data: tag });
|
|
2998
|
+
}
|
|
2999
|
+
catch (err) {
|
|
3000
|
+
return internalError(err, 'script-tags update');
|
|
3001
|
+
}
|
|
3002
|
+
});
|
|
3003
|
+
router.delete('/script-tags/:id', async (request, params) => {
|
|
3004
|
+
try {
|
|
3005
|
+
const auth = await requireAuth(request);
|
|
3006
|
+
if (auth.error)
|
|
3007
|
+
return auth.error;
|
|
3008
|
+
const roleErr = requireRole(auth.session.role, ADMIN_ROLES);
|
|
3009
|
+
if (roleErr)
|
|
3010
|
+
return roleErr;
|
|
3011
|
+
const d = db();
|
|
3012
|
+
if (!hasModel(d, 'scriptTag'))
|
|
3013
|
+
return modelNotAvailable('ScriptTag');
|
|
3014
|
+
const existing = await d.scriptTag.findUnique({ where: { id: params.id } });
|
|
3015
|
+
if (!existing)
|
|
3016
|
+
return errorResponse('Script tag not found', 404);
|
|
3017
|
+
await d.scriptTag.delete({ where: { id: params.id } });
|
|
3018
|
+
await logEvent({
|
|
3019
|
+
event: 'settings_changed',
|
|
3020
|
+
userId: auth.session.userId,
|
|
3021
|
+
details: { action: 'script_tag_deleted', tagId: existing.id, name: existing.name },
|
|
3022
|
+
});
|
|
3023
|
+
return json({ data: { deleted: true } });
|
|
3024
|
+
}
|
|
3025
|
+
catch (err) {
|
|
3026
|
+
return internalError(err, 'script-tags delete');
|
|
3027
|
+
}
|
|
3028
|
+
});
|
|
3029
|
+
// ---------------------------------------------------------------------------
|
|
2659
3030
|
// Presence SSE
|
|
2660
3031
|
// ---------------------------------------------------------------------------
|
|
2661
3032
|
router.get('/presence/:documentId', async (request, params) => {
|