@strapi/review-workflows 5.0.0-rc.8 → 5.0.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.
Files changed (41) hide show
  1. package/dist/_chunks/{Layout-Dx59M7TT.mjs → Layout-BJOxxAeM.mjs} +2 -2
  2. package/dist/_chunks/{Layout-Dx59M7TT.mjs.map → Layout-BJOxxAeM.mjs.map} +1 -1
  3. package/dist/_chunks/{Layout-B8FL2x6-.js → Layout-DnEAvmeU.js} +2 -2
  4. package/dist/_chunks/{Layout-B8FL2x6-.js.map → Layout-DnEAvmeU.js.map} +1 -1
  5. package/dist/_chunks/{_id-AtadE_bb.mjs → _id-6LK95-rZ.mjs} +10 -10
  6. package/dist/_chunks/_id-6LK95-rZ.mjs.map +1 -0
  7. package/dist/_chunks/{_id-C-SYBc57.js → _id-DSDzUpwX.js} +10 -10
  8. package/dist/_chunks/_id-DSDzUpwX.js.map +1 -0
  9. package/dist/_chunks/{index-CI4KFjfU.js → index-6FZL88pd.js} +9 -29
  10. package/dist/_chunks/index-6FZL88pd.js.map +1 -0
  11. package/dist/_chunks/{index-Dj2vG7H2.js → index-DZSLya4b.js} +25 -19
  12. package/dist/_chunks/index-DZSLya4b.js.map +1 -0
  13. package/dist/_chunks/{index-0pB4f3ex.mjs → index-Df1alkCk.mjs} +11 -31
  14. package/dist/_chunks/index-Df1alkCk.mjs.map +1 -0
  15. package/dist/_chunks/{index-CtpGMTO2.mjs → index-lJqpw8bs.mjs} +25 -19
  16. package/dist/_chunks/index-lJqpw8bs.mjs.map +1 -0
  17. package/dist/_chunks/{router-Co81pRA9.js → router-CZqe-02r.js} +3 -3
  18. package/dist/_chunks/{router-Co81pRA9.js.map → router-CZqe-02r.js.map} +1 -1
  19. package/dist/_chunks/{router-C6NXX9-N.mjs → router-DeSH-NeW.mjs} +3 -3
  20. package/dist/_chunks/{router-C6NXX9-N.mjs.map → router-DeSH-NeW.mjs.map} +1 -1
  21. package/dist/admin/index.js +1 -1
  22. package/dist/admin/index.mjs +1 -1
  23. package/dist/server/index.js +35 -20
  24. package/dist/server/index.js.map +1 -1
  25. package/dist/server/index.mjs +35 -20
  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/index.d.ts +1 -1
  30. package/dist/server/src/services/document-service-middleware.d.ts.map +1 -1
  31. package/dist/server/src/services/index.d.ts +1 -1
  32. package/dist/server/src/services/stages.d.ts +2 -7
  33. package/dist/server/src/services/stages.d.ts.map +1 -1
  34. package/package.json +9 -9
  35. package/dist/_chunks/_id-AtadE_bb.mjs.map +0 -1
  36. package/dist/_chunks/_id-C-SYBc57.js.map +0 -1
  37. package/dist/_chunks/index-0pB4f3ex.mjs.map +0 -1
  38. package/dist/_chunks/index-CI4KFjfU.js.map +0 -1
  39. package/dist/_chunks/index-CtpGMTO2.mjs.map +0 -1
  40. package/dist/_chunks/index-Dj2vG7H2.js.map +0 -1
  41. package/strapi-server.js +0 -3
@@ -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
  ]
@@ -7321,23 +7321,17 @@ const stages$1 = ({ strapi: strapi2 }) => {
7321
7321
  },
7322
7322
  /**
7323
7323
  * Update the stage of an entity
7324
- *
7325
- * @param {object} entityInfo
7326
- * @param {number} entityInfo.id - Entity id
7327
- * @param {string} entityInfo.modelUID - the content-type of the entity
7328
- * @param {number} stageId - The id of the stage to assign to the entity
7329
7324
  */
7330
- async updateEntity(entityInfo, stageId) {
7325
+ async updateEntity(documentId, locale, model, stageId) {
7331
7326
  const stage = await this.findById(stageId);
7332
7327
  await workflowValidator.validateWorkflowCount();
7333
7328
  if (!stage) {
7334
7329
  throw new ApplicationError$2(`Selected stage does not exist`);
7335
7330
  }
7336
- const entity = await strapi2.db.query(entityInfo.modelUID).update({
7337
- where: {
7338
- id: entityInfo.id
7339
- },
7340
- data: { [ENTITY_STAGE_ATTRIBUTE]: stageId },
7331
+ const entity = await strapi2.documents(model).update({
7332
+ documentId,
7333
+ locale,
7334
+ data: { [ENTITY_STAGE_ATTRIBUTE]: stage },
7341
7335
  populate: [ENTITY_STAGE_ATTRIBUTE]
7342
7336
  });
7343
7337
  metrics.sendDidChangeEntryStage();
@@ -7810,6 +7804,7 @@ const handleStageOnUpdate = async (ctx, next) => {
7810
7804
  strapi.eventHub.emit(WORKFLOW_UPDATE_STAGE, {
7811
7805
  model: model.modelName,
7812
7806
  uid: model.uid,
7807
+ // TODO v6: Rename to "entry", which is what is used for regular CRUD updates
7813
7808
  entity: {
7814
7809
  // @ts-expect-error
7815
7810
  id: result?.id,
@@ -8095,7 +8090,12 @@ const stages = {
8095
8090
  );
8096
8091
  const workflow2 = await workflowService.assertContentTypeBelongsToWorkflow(modelUID);
8097
8092
  workflowService.assertStageBelongsToWorkflow(stageId, workflow2);
8098
- const updatedEntity = await stagesService.updateEntity({ id: entity.id, modelUID }, stageId);
8093
+ const updatedEntity = await stagesService.updateEntity(
8094
+ entity.documentId,
8095
+ entity.locale,
8096
+ modelUID,
8097
+ stageId
8098
+ );
8099
8099
  ctx.body = { data: await sanitizeOutput(updatedEntity) };
8100
8100
  },
8101
8101
  /**
@@ -8115,10 +8115,9 @@ const stages = {
8115
8115
  if (strapi.plugin("content-manager").service("permission-checker").create({ userAbility: ctx.state.userAbility, model: modelUID }).cannot.read()) {
8116
8116
  return ctx.forbidden();
8117
8117
  }
8118
- const locale = await validateLocale(query?.locale);
8118
+ const locale = await validateLocale(query?.locale) ?? void 0;
8119
8119
  const entity = await strapi.documents(modelUID).findOne({
8120
8120
  documentId,
8121
- // @ts-expect-error - locale should be also null in the doc service types
8122
8121
  locale,
8123
8122
  populate: [ENTITY_STAGE_ATTRIBUTE]
8124
8123
  });
@@ -8127,12 +8126,13 @@ const stages = {
8127
8126
  }
8128
8127
  const entityStageId = entity[ENTITY_STAGE_ATTRIBUTE]?.id;
8129
8128
  const canTransition = stagePermissions2.can(STAGE_TRANSITION_UID, entityStageId);
8130
- const [workflowCount, { stages: workflowStages }] = await Promise.all([
8129
+ const [workflowCount, workflowResult] = await Promise.all([
8131
8130
  workflowService.count(),
8132
8131
  workflowService.getAssignedWorkflow(modelUID, {
8133
8132
  populate: "stages"
8134
8133
  })
8135
8134
  ]);
8135
+ const workflowStages = workflowResult ? workflowResult.stages : [];
8136
8136
  const meta = {
8137
8137
  stageCount: workflowStages.length,
8138
8138
  workflowCount
@@ -8168,22 +8168,37 @@ const assignees = {
8168
8168
  async updateEntity(ctx) {
8169
8169
  const assigneeService = getService("assignees");
8170
8170
  const workflowService = getService("workflows");
8171
+ const stagePermissions2 = getService("stage-permissions");
8171
8172
  const { model_uid: model, id: documentId } = ctx.params;
8172
- const { locale } = ctx.request.query || {};
8173
+ const locale = await validateLocale(ctx.request.query?.locale) ?? void 0;
8173
8174
  const { sanitizeOutput } = strapi.plugin("content-manager").service("permission-checker").create({ userAbility: ctx.state.userAbility, model });
8175
+ const entity = await strapi.documents(model).findOne({
8176
+ documentId,
8177
+ locale,
8178
+ populate: [ENTITY_STAGE_ATTRIBUTE]
8179
+ });
8180
+ if (!entity) {
8181
+ ctx.throw(404, "Entity not found");
8182
+ }
8183
+ const canTransitionStage = stagePermissions2.can(
8184
+ STAGE_TRANSITION_UID,
8185
+ entity[ENTITY_STAGE_ATTRIBUTE]?.id
8186
+ );
8187
+ if (!canTransitionStage) {
8188
+ ctx.throw(403, "Stage transition permission is required");
8189
+ }
8174
8190
  const { id: assigneeId } = await validateUpdateAssigneeOnEntity(
8175
8191
  ctx.request?.body?.data,
8176
8192
  "You should pass a valid id to the body of the put request."
8177
8193
  );
8178
- await validateLocale(locale);
8179
8194
  await workflowService.assertContentTypeBelongsToWorkflow(model);
8180
- const entity = await assigneeService.updateEntityAssignee(
8195
+ const updatedEntity = await assigneeService.updateEntityAssignee(
8181
8196
  documentId,
8182
8197
  locale || null,
8183
8198
  model,
8184
8199
  assigneeId
8185
8200
  );
8186
- ctx.body = { data: await sanitizeOutput(entity) };
8201
+ ctx.body = { data: await sanitizeOutput(updatedEntity) };
8187
8202
  }
8188
8203
  };
8189
8204
  const controllers = {