@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.
@@ -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;AAED,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,CAmBzC;AAED,8DAA8D;AAC9D,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,UAAU,CAAC,CAiFrB;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"}
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
- const fields = getCollectionFields(collection);
208
- if (fields && doc.data && typeof doc.data === "object") {
209
- const user = { id: ctx.userId, role: ctx.role };
210
- return {
211
- ...doc,
212
- data: await applyFieldAccess("read", fields, doc.data, user),
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
- if (fields) {
267
- const user = { id: ctx.userId, role: ctx.role };
268
- docs = await Promise.all(rawDocs.map(async (doc) => {
269
- if (doc.data && typeof doc.data === "object") {
270
- return {
271
- ...doc,
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,
@@ -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":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAiCtD,SAAS,MAAM,CAAC,GAAkB;IAChC,OAAO,GAAG,CAAC,EAAc,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,IAA6B;IACrE,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACzD,QAAQ,CAAC,KAAY,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACzC,OAAO,CAAC,KAAK,CAAC,yCAAyC,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,KAAa,EAAE,GAA4B,EAAE,GAAkB;IAC5F,IAAI,CAAC;QACH,MAAM,MAAM,GAAI,UAAkB,CAAC,eAAe,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,EAAE,YAAY,IAAI,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QAC7D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,KAAK,UAAU,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,IAA+B,CAAC;YACpD,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC;YACxF,IAAI,YAAY,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACvB,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACvB,KAAK,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAY,EAAE;oBAC/B,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;iBACxB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;oBACxB,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAkB;IAC7C,MAAM,MAAM,GAAI,UAAkB,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC;IAC9E,OAAO,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,UAAkB,EAClB,SAAkD,EAClD,GAAkB,EAClB,GAA6B;IAE7B,MAAM,gBAAgB,GAAI,UAAkB,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,gBAAgB,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,mBAAmB,UAAU,GAAG,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,IAA6B,EAAE,UAAkB;IAC7E,MAAM,MAAM,GAAI,UAAkB,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAoC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;IAErE,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,QAAQ,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAA6B;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AACpC,CAAC;AAED,6CAA6C;AAC7C,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,IAA6B,EAC7B,GAAkB;IAElB,MAAM,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IAEhD,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,MAAM;QAC3B,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QACrD,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,YAAY,GAAG,oBAAoB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAEtE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAEzE,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAY,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACnC,IAAI,EAAE;gBACJ,UAAU;gBACV,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;gBACzE,IAAI,EAAE,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;gBACtE,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;gBAC1B,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,SAAS;gBACT,WAAW;aACZ;SACF,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACJ,UAAU,EAAE,GAAG,CAAC,EAAE;gBAClB,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ;aACrB;SACF,CAAC,CAAC;QAEH,WAAW,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9F,eAAe,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAEzC,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,EAAU,EACV,IAA6B,EAC7B,GAAkB;IAElB,MAAM,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IAEhD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC3C,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE;KAC3C,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,aAAa,EAAE,8BAA8B,UAAU,GAAG,CAC3D,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC;QACvE,CAAC,CAAC,QAAQ,CAAC,IAA+B;QAC1C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,UAAU,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC;IAEhD,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,MAAM;QAC3B,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC;QAC3D,CAAC,CAAC,UAAU,CAAC;IACf,MAAM,YAAY,GAAG,oBAAoB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAEtE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAEzE,MAAM,MAAM,GAAG,OAAO,YAAY,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAEzF,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAY,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACvC,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE;gBACJ,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC9E,IAAI,EAAE,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAC3E,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,SAAS;gBACT,WAAW;gBACX,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/D;SACF,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACJ,UAAU,EAAE,EAAE;gBACd,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ;aACrB;SACF,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACxF,WAAW,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3H,eAAe,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAE7C,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,EAAU,EACV,GAAkB;IAElB,MAAM,qBAAqB,CAAC,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEvD,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAEvB,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC3C,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE;KAC3C,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,aAAa,EAAE,8BAA8B,UAAU,GAAG,CAC3D,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAY,EAAE,EAAE;QAC3C,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACJ,UAAU,EAAE,EAAE;gBACd,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;gBACzB,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ;aACrB;SACF,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACvB,KAAK,EAAE,EAAE,EAAE,EAAE;YACb,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE;SAChC,CAAC,CAAC;QAEH,WAAW,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA6B;IACtD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,EAAU,EACV,GAAkB;IAElB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAEvB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QACtC,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE;KAC3C,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7C,IAAI,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAA+B,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;YAChD,IAAI,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAoB,EACpB,GAAkB;IAElB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IAEnC,MAAM,KAAK,GAA4B;QACrC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,IAAI;KAChB,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACxB,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5B,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACpC,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;QAC9B,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU;KACrE,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC1D,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;QAC3B,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY;KAChE,CAAC,CAAC;IAEH,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAK,CAAC,CAAC,CAAC,WAAW,CAAC;IACrF,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;IAE7C,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACzC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnB,KAAK;YACL,IAAI;YACJ,IAAI,EAAE,QAAQ;YACd,OAAO;SACR,CAAC;QACF,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;KAC7B,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,IAAI,GAAG,OAAO,CAAC;IAEnB,MAAM,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IAChD,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CACtB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAQ,EAAE,EAAE;QAC7B,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7C,IAAI,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAA+B,CAAC,CAAC;YAClE,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CACH,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,QAAQ;QACR,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAkB,EAClB,QAAgB,EAChB,GAAkB;IAElB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAEvB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzC,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE;KACrD,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,oBAAoB,QAAQ,8BAA8B,UAAU,GAAG,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,GAAI,MAAM,CAAC,IAAgC,EAAE,CAAC;IAEnE,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACzC,UAAU,CAAC,KAAK,IAAI,SAAS,CAAC;IAChC,CAAC;SAAM,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/C,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACxC,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC;IAC7B,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEvE,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAY,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACnC,IAAI,EAAE;gBACJ,UAAU;gBACV,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,SAAS;gBACT,WAAW;gBACX,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B;SACF,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACJ,UAAU,EAAE,GAAG,CAAC,EAAE;gBAClB,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ;aACrB;SACF,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC;AAED,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,GAAkB;IAElB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAEvB,OAAO,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC3B,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAY,EACZ,IAA6B,EAC7B,GAAkB;IAElB,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAEjE,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC3C,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE;KAC7C,CAAC,CAAC;IAEH,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAY,EAAE,EAAE;YAC5C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACvC,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE;gBAC1B,IAAI,EAAE;oBACJ,IAAI;oBACJ,WAAW,EAAE,GAAG,CAAC,MAAM;oBACvB,SAAS;oBACT,WAAW;iBACZ;aACF,CAAC,CAAC;YAEH,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;gBACtB,IAAI,EAAE;oBACJ,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,IAAI;oBACJ,WAAW,EAAE,GAAG,CAAC,MAAM;oBACvB,UAAU,EAAE,QAAQ;iBACrB;aACF,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAY,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACvC,IAAI,EAAE;gBACJ,UAAU,EAAE,IAAI;gBAChB,IAAI;gBACJ,MAAM,EAAE,OAAO;gBACf,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,SAAS;gBACT,WAAW;aACZ;SACF,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACJ,UAAU,EAAE,OAAO,CAAC,EAAE;gBACtB,IAAI;gBACJ,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ;aACrB;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -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;AAkN7C,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAS9E;AAiED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4jFzD"}
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"}
@@ -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
- for (const col of collectionDefs) {
2136
- const prefix = (col.urlPrefix ?? col.slug ?? '').replace(/^\/|\/$/g, '');
2137
- if (prefix && segments.length >= 2) {
2138
- const prefixParts = prefix.split('/');
2139
- const pathPrefix = segments.slice(0, prefixParts.length).join('/');
2140
- if (pathPrefix === prefix) {
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.slice(prefixParts.length).join('/');
2143
- break;
2304
+ docSlug = segments.join('/');
2144
2305
  }
2145
2306
  }
2146
- else if (!prefix && col.type === 'page') {
2147
- matchedCollection = col.slug;
2148
- docSlug = segments.join('/');
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
- { data: { path: ['slug'], equals: docSlug } },
2169
- { plainText: { contains: docSlug } },
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: doc.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) => {