@strapi/review-workflows 0.0.0-experimental.71ed910bd859c7e558bd1c1042eaadb7d26fd22a → 0.0.0-experimental.7273fc63f5c2c8aa9e100655b1776f3e0621e61a

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.
Files changed (38) hide show
  1. package/dist/_chunks/{Layout-C03LlqOq.js → Layout-8i0EXRRs.js} +2 -2
  2. package/dist/_chunks/{Layout-C03LlqOq.js.map → Layout-8i0EXRRs.js.map} +1 -1
  3. package/dist/_chunks/{Layout-BL8djfsC.mjs → Layout-C9m07iTY.mjs} +2 -2
  4. package/dist/_chunks/{Layout-BL8djfsC.mjs.map → Layout-C9m07iTY.mjs.map} +1 -1
  5. package/dist/_chunks/{_id-DJbIpA0G.js → id-CmtaTf1x.js} +6 -7
  6. package/dist/_chunks/id-CmtaTf1x.js.map +1 -0
  7. package/dist/_chunks/{_id-Dqkyfusr.mjs → id-DV0Ndeav.mjs} +6 -7
  8. package/dist/_chunks/id-DV0Ndeav.mjs.map +1 -0
  9. package/dist/_chunks/{index-D3id9TXV.js → index-B8WmHbCU.js} +3 -3
  10. package/dist/_chunks/{index-D3id9TXV.js.map → index-B8WmHbCU.js.map} +1 -1
  11. package/dist/_chunks/{index-C8M5OkXj.js → index-BCUO98DV.js} +25 -22
  12. package/dist/_chunks/index-BCUO98DV.js.map +1 -0
  13. package/dist/_chunks/{index-BPEorVRx.mjs → index-CA5Axcoc.mjs} +3 -3
  14. package/dist/_chunks/{index-BPEorVRx.mjs.map → index-CA5Axcoc.mjs.map} +1 -1
  15. package/dist/_chunks/{index-BZLIQ0fO.mjs → index-CqYVkW3E.mjs} +25 -22
  16. package/dist/_chunks/index-CqYVkW3E.mjs.map +1 -0
  17. package/dist/_chunks/{router-glyRmw5L.js → router-BOXlNnrU.js} +3 -3
  18. package/dist/_chunks/router-BOXlNnrU.js.map +1 -0
  19. package/dist/_chunks/{router-Bh38qGTT.mjs → router-Jdt6SbIA.mjs} +3 -3
  20. package/dist/_chunks/router-Jdt6SbIA.mjs.map +1 -0
  21. package/dist/admin/index.js +1 -1
  22. package/dist/admin/index.mjs +1 -1
  23. package/dist/server/index.js +36 -15
  24. package/dist/server/index.js.map +1 -1
  25. package/dist/server/index.mjs +36 -15
  26. package/dist/server/index.mjs.map +1 -1
  27. package/dist/server/src/controllers/assignees.d.ts.map +1 -1
  28. package/dist/server/src/controllers/stages.d.ts.map +1 -1
  29. package/dist/server/src/services/metrics/weekly-metrics.d.ts.map +1 -1
  30. package/dist/server/src/services/stages.d.ts.map +1 -1
  31. package/package.json +7 -7
  32. package/dist/_chunks/_id-DJbIpA0G.js.map +0 -1
  33. package/dist/_chunks/_id-Dqkyfusr.mjs.map +0 -1
  34. package/dist/_chunks/index-BZLIQ0fO.mjs.map +0 -1
  35. package/dist/_chunks/index-C8M5OkXj.js.map +0 -1
  36. package/dist/_chunks/router-Bh38qGTT.mjs.map +0 -1
  37. package/dist/_chunks/router-glyRmw5L.js.map +0 -1
  38. /package/dist/admin/src/routes/settings/{:id.d.ts → id.d.ts} +0 -0
@@ -6900,7 +6900,7 @@ const reviewWorkflows = {
6900
6900
  {
6901
6901
  name: "admin::hasPermissions",
6902
6902
  config: {
6903
- actions: ["admin::users.read", "admin::review-workflows.read"]
6903
+ actions: ["admin::users.read"]
6904
6904
  }
6905
6905
  }
6906
6906
  ]
@@ -7331,7 +7331,9 @@ const stages$1 = ({ strapi: strapi2 }) => {
7331
7331
  const entity = await strapi2.documents(model).update({
7332
7332
  documentId,
7333
7333
  locale,
7334
- data: { [ENTITY_STAGE_ATTRIBUTE]: stage },
7334
+ // Stage doesn't have DP or i18n enabled, connecting it through the `id`
7335
+ // will be safer than relying on the `documentId` + `locale` + `status` transformation
7336
+ data: { [ENTITY_STAGE_ATTRIBUTE]: fp.pick(["id"], stage) },
7335
7337
  populate: [ENTITY_STAGE_ATTRIBUTE]
7336
7338
  });
7337
7339
  metrics.sendDidChangeEntryStage();
@@ -7607,13 +7609,13 @@ const reviewWorkflowsMetrics = {
7607
7609
  sendDidSendReviewWorkflowPropertiesOnceAWeek,
7608
7610
  sendDidEditAssignee
7609
7611
  };
7610
- function _typeof(obj) {
7612
+ function _typeof(o) {
7611
7613
  "@babel/helpers - typeof";
7612
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj2) {
7613
- return typeof obj2;
7614
- } : function(obj2) {
7615
- return obj2 && "function" == typeof Symbol && obj2.constructor === Symbol && obj2 !== Symbol.prototype ? "symbol" : typeof obj2;
7616
- }, _typeof(obj);
7614
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o2) {
7615
+ return typeof o2;
7616
+ } : function(o2) {
7617
+ return o2 && "function" == typeof Symbol && o2.constructor === Symbol && o2 !== Symbol.prototype ? "symbol" : typeof o2;
7618
+ }, _typeof(o);
7617
7619
  }
7618
7620
  function toInteger(dirtyNumber) {
7619
7621
  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {
@@ -7748,7 +7750,12 @@ const reviewWorkflowsWeeklyMetrics = ({ strapi: strapi2 }) => {
7748
7750
  },
7749
7751
  async registerCron() {
7750
7752
  const weeklySchedule = await this.ensureWeeklyStoredCronSchedule();
7751
- strapi2.cron.add({ [weeklySchedule]: this.sendMetrics.bind(this) });
7753
+ strapi2.cron.add({
7754
+ reviewWorkflowsWeekly: {
7755
+ task: this.sendMetrics.bind(this),
7756
+ options: weeklySchedule
7757
+ }
7758
+ });
7752
7759
  }
7753
7760
  };
7754
7761
  };
@@ -8115,10 +8122,9 @@ const stages = {
8115
8122
  if (strapi.plugin("content-manager").service("permission-checker").create({ userAbility: ctx.state.userAbility, model: modelUID }).cannot.read()) {
8116
8123
  return ctx.forbidden();
8117
8124
  }
8118
- const locale = await validateLocale(query?.locale);
8125
+ const locale = await validateLocale(query?.locale) ?? void 0;
8119
8126
  const entity = await strapi.documents(modelUID).findOne({
8120
8127
  documentId,
8121
- // @ts-expect-error - locale should be also null in the doc service types
8122
8128
  locale,
8123
8129
  populate: [ENTITY_STAGE_ATTRIBUTE]
8124
8130
  });
@@ -8169,22 +8175,37 @@ const assignees = {
8169
8175
  async updateEntity(ctx) {
8170
8176
  const assigneeService = getService("assignees");
8171
8177
  const workflowService = getService("workflows");
8178
+ const stagePermissions2 = getService("stage-permissions");
8172
8179
  const { model_uid: model, id: documentId } = ctx.params;
8173
- const { locale } = ctx.request.query || {};
8180
+ const locale = await validateLocale(ctx.request.query?.locale) ?? void 0;
8174
8181
  const { sanitizeOutput } = strapi.plugin("content-manager").service("permission-checker").create({ userAbility: ctx.state.userAbility, model });
8182
+ const entity = await strapi.documents(model).findOne({
8183
+ documentId,
8184
+ locale,
8185
+ populate: [ENTITY_STAGE_ATTRIBUTE]
8186
+ });
8187
+ if (!entity) {
8188
+ ctx.throw(404, "Entity not found");
8189
+ }
8190
+ const canTransitionStage = stagePermissions2.can(
8191
+ STAGE_TRANSITION_UID,
8192
+ entity[ENTITY_STAGE_ATTRIBUTE]?.id
8193
+ );
8194
+ if (!canTransitionStage) {
8195
+ ctx.throw(403, "Stage transition permission is required");
8196
+ }
8175
8197
  const { id: assigneeId } = await validateUpdateAssigneeOnEntity(
8176
8198
  ctx.request?.body?.data,
8177
8199
  "You should pass a valid id to the body of the put request."
8178
8200
  );
8179
- await validateLocale(locale);
8180
8201
  await workflowService.assertContentTypeBelongsToWorkflow(model);
8181
- const entity = await assigneeService.updateEntityAssignee(
8202
+ const updatedEntity = await assigneeService.updateEntityAssignee(
8182
8203
  documentId,
8183
8204
  locale || null,
8184
8205
  model,
8185
8206
  assigneeId
8186
8207
  );
8187
- ctx.body = { data: await sanitizeOutput(entity) };
8208
+ ctx.body = { data: await sanitizeOutput(updatedEntity) };
8188
8209
  }
8189
8210
  };
8190
8211
  const controllers = {