@strapi/review-workflows 5.0.0-rc.3 → 5.0.0-rc.30
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/_chunks/{Layout-Da8jupiA.mjs → Layout-BJOxxAeM.mjs} +7 -8
- package/dist/_chunks/Layout-BJOxxAeM.mjs.map +1 -0
- package/dist/_chunks/{Layout-D3DDQmMI.js → Layout-DnEAvmeU.js} +7 -8
- package/dist/_chunks/Layout-DnEAvmeU.js.map +1 -0
- package/dist/_chunks/{_id-xSrgPSJs.mjs → _id-6LK95-rZ.mjs} +13 -39
- package/dist/_chunks/_id-6LK95-rZ.mjs.map +1 -0
- package/dist/_chunks/{_id-CnRDP3Xx.js → _id-DSDzUpwX.js} +13 -39
- package/dist/_chunks/_id-DSDzUpwX.js.map +1 -0
- package/dist/_chunks/{index-4kp4AkBB.js → index-6FZL88pd.js} +9 -29
- package/dist/_chunks/index-6FZL88pd.js.map +1 -0
- package/dist/_chunks/{index-DhPxWpsW.js → index-DZSLya4b.js} +78 -64
- package/dist/_chunks/index-DZSLya4b.js.map +1 -0
- package/dist/_chunks/{index-jfO5GxtW.mjs → index-Df1alkCk.mjs} +11 -31
- package/dist/_chunks/index-Df1alkCk.mjs.map +1 -0
- package/dist/_chunks/{index-DDsJlZQw.mjs → index-lJqpw8bs.mjs} +79 -65
- package/dist/_chunks/index-lJqpw8bs.mjs.map +1 -0
- package/dist/_chunks/{router-DSXpeew4.js → router-CZqe-02r.js} +3 -3
- package/dist/_chunks/{router-DSXpeew4.js.map → router-CZqe-02r.js.map} +1 -1
- package/dist/_chunks/{router-DOEULOpS.mjs → router-DeSH-NeW.mjs} +3 -3
- package/dist/_chunks/{router-DOEULOpS.mjs.map → router-DeSH-NeW.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/services/admin.d.ts +1 -1
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/content-manager.d.ts +4 -4
- package/dist/admin/src/services/settings.d.ts +1733 -7
- package/dist/server/index.js +35 -61
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +35 -61
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/assignees.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +0 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/stages.d.ts.map +1 -1
- package/dist/server/src/controllers/workflows.d.ts +0 -7
- package/dist/server/src/controllers/workflows.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +1 -2
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/review-workflows.d.ts.map +1 -1
- package/dist/server/src/services/document-service-middleware.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -1
- package/dist/server/src/services/stages.d.ts +2 -7
- package/dist/server/src/services/stages.d.ts.map +1 -1
- package/dist/shared/contracts/review-workflows.d.ts +1 -14
- package/dist/shared/contracts/review-workflows.d.ts.map +1 -1
- package/package.json +9 -9
- package/dist/_chunks/Layout-D3DDQmMI.js.map +0 -1
- package/dist/_chunks/Layout-Da8jupiA.mjs.map +0 -1
- package/dist/_chunks/_id-CnRDP3Xx.js.map +0 -1
- package/dist/_chunks/_id-xSrgPSJs.mjs.map +0 -1
- package/dist/_chunks/index-4kp4AkBB.js.map +0 -1
- package/dist/_chunks/index-DDsJlZQw.mjs.map +0 -1
- package/dist/_chunks/index-DhPxWpsW.js.map +0 -1
- package/dist/_chunks/index-jfO5GxtW.mjs.map +0 -1
- package/strapi-server.js +0 -3
package/dist/server/index.js
CHANGED
|
@@ -6838,23 +6838,6 @@ const reviewWorkflows = {
|
|
|
6838
6838
|
]
|
|
6839
6839
|
}
|
|
6840
6840
|
},
|
|
6841
|
-
{
|
|
6842
|
-
method: "GET",
|
|
6843
|
-
path: "/workflows/:id",
|
|
6844
|
-
handler: "workflows.findById",
|
|
6845
|
-
config: {
|
|
6846
|
-
middlewares: [enableFeatureMiddleware("review-workflows")],
|
|
6847
|
-
policies: [
|
|
6848
|
-
"admin::isAuthenticatedAdmin",
|
|
6849
|
-
{
|
|
6850
|
-
name: "admin::hasPermissions",
|
|
6851
|
-
config: {
|
|
6852
|
-
actions: ["admin::review-workflows.read"]
|
|
6853
|
-
}
|
|
6854
|
-
}
|
|
6855
|
-
]
|
|
6856
|
-
}
|
|
6857
|
-
},
|
|
6858
6841
|
{
|
|
6859
6842
|
method: "GET",
|
|
6860
6843
|
path: "/workflows/:workflow_id/stages",
|
|
@@ -6918,7 +6901,7 @@ const reviewWorkflows = {
|
|
|
6918
6901
|
{
|
|
6919
6902
|
name: "admin::hasPermissions",
|
|
6920
6903
|
config: {
|
|
6921
|
-
actions: ["admin::users.read"
|
|
6904
|
+
actions: ["admin::users.read"]
|
|
6922
6905
|
}
|
|
6923
6906
|
}
|
|
6924
6907
|
]
|
|
@@ -7339,23 +7322,17 @@ const stages$1 = ({ strapi: strapi2 }) => {
|
|
|
7339
7322
|
},
|
|
7340
7323
|
/**
|
|
7341
7324
|
* Update the stage of an entity
|
|
7342
|
-
*
|
|
7343
|
-
* @param {object} entityInfo
|
|
7344
|
-
* @param {number} entityInfo.id - Entity id
|
|
7345
|
-
* @param {string} entityInfo.modelUID - the content-type of the entity
|
|
7346
|
-
* @param {number} stageId - The id of the stage to assign to the entity
|
|
7347
7325
|
*/
|
|
7348
|
-
async updateEntity(
|
|
7326
|
+
async updateEntity(documentId, locale, model, stageId) {
|
|
7349
7327
|
const stage = await this.findById(stageId);
|
|
7350
7328
|
await workflowValidator.validateWorkflowCount();
|
|
7351
7329
|
if (!stage) {
|
|
7352
7330
|
throw new ApplicationError$2(`Selected stage does not exist`);
|
|
7353
7331
|
}
|
|
7354
|
-
const entity = await strapi2.
|
|
7355
|
-
|
|
7356
|
-
|
|
7357
|
-
},
|
|
7358
|
-
data: { [ENTITY_STAGE_ATTRIBUTE]: stageId },
|
|
7332
|
+
const entity = await strapi2.documents(model).update({
|
|
7333
|
+
documentId,
|
|
7334
|
+
locale,
|
|
7335
|
+
data: { [ENTITY_STAGE_ATTRIBUTE]: stage },
|
|
7359
7336
|
populate: [ENTITY_STAGE_ATTRIBUTE]
|
|
7360
7337
|
});
|
|
7361
7338
|
metrics.sendDidChangeEntryStage();
|
|
@@ -7828,6 +7805,7 @@ const handleStageOnUpdate = async (ctx, next) => {
|
|
|
7828
7805
|
strapi.eventHub.emit(WORKFLOW_UPDATE_STAGE, {
|
|
7829
7806
|
model: model.modelName,
|
|
7830
7807
|
uid: model.uid,
|
|
7808
|
+
// TODO v6: Rename to "entry", which is what is used for regular CRUD updates
|
|
7831
7809
|
entity: {
|
|
7832
7810
|
// @ts-expect-error
|
|
7833
7811
|
id: result?.id,
|
|
@@ -8029,30 +8007,6 @@ const workflows = {
|
|
|
8029
8007
|
workflowCount
|
|
8030
8008
|
}
|
|
8031
8009
|
};
|
|
8032
|
-
},
|
|
8033
|
-
/**
|
|
8034
|
-
* Get one workflow based on its id contained in request parameters
|
|
8035
|
-
* Returns count of workflows in meta, used to prevent workflow edition when
|
|
8036
|
-
* max workflow count is reached for the current plan
|
|
8037
|
-
* @param {import('koa').BaseContext} ctx - koa context
|
|
8038
|
-
*/
|
|
8039
|
-
async findById(ctx) {
|
|
8040
|
-
const { id } = ctx.params;
|
|
8041
|
-
const { query } = ctx.request;
|
|
8042
|
-
const { sanitizeOutput, sanitizedQuery } = getWorkflowsPermissionChecker(
|
|
8043
|
-
{ strapi },
|
|
8044
|
-
ctx.state.userAbility
|
|
8045
|
-
);
|
|
8046
|
-
const { populate } = await sanitizedQuery.read(query);
|
|
8047
|
-
const workflowService = getService("workflows");
|
|
8048
|
-
const [workflow2, workflowCount] = await Promise.all([
|
|
8049
|
-
workflowService.findById(id, { populate }).then(formatWorkflowToAdmin),
|
|
8050
|
-
workflowService.count()
|
|
8051
|
-
]);
|
|
8052
|
-
ctx.body = {
|
|
8053
|
-
data: await sanitizeOutput(workflow2),
|
|
8054
|
-
meta: { workflowCount }
|
|
8055
|
-
};
|
|
8056
8010
|
}
|
|
8057
8011
|
};
|
|
8058
8012
|
function sanitizeStage({ strapi: strapi2 }, userAbility) {
|
|
@@ -8137,7 +8091,12 @@ const stages = {
|
|
|
8137
8091
|
);
|
|
8138
8092
|
const workflow2 = await workflowService.assertContentTypeBelongsToWorkflow(modelUID);
|
|
8139
8093
|
workflowService.assertStageBelongsToWorkflow(stageId, workflow2);
|
|
8140
|
-
const updatedEntity = await stagesService.updateEntity(
|
|
8094
|
+
const updatedEntity = await stagesService.updateEntity(
|
|
8095
|
+
entity.documentId,
|
|
8096
|
+
entity.locale,
|
|
8097
|
+
modelUID,
|
|
8098
|
+
stageId
|
|
8099
|
+
);
|
|
8141
8100
|
ctx.body = { data: await sanitizeOutput(updatedEntity) };
|
|
8142
8101
|
},
|
|
8143
8102
|
/**
|
|
@@ -8157,10 +8116,9 @@ const stages = {
|
|
|
8157
8116
|
if (strapi.plugin("content-manager").service("permission-checker").create({ userAbility: ctx.state.userAbility, model: modelUID }).cannot.read()) {
|
|
8158
8117
|
return ctx.forbidden();
|
|
8159
8118
|
}
|
|
8160
|
-
const locale = await validateLocale(query?.locale);
|
|
8119
|
+
const locale = await validateLocale(query?.locale) ?? void 0;
|
|
8161
8120
|
const entity = await strapi.documents(modelUID).findOne({
|
|
8162
8121
|
documentId,
|
|
8163
|
-
// @ts-expect-error - locale should be also null in the doc service types
|
|
8164
8122
|
locale,
|
|
8165
8123
|
populate: [ENTITY_STAGE_ATTRIBUTE]
|
|
8166
8124
|
});
|
|
@@ -8169,12 +8127,13 @@ const stages = {
|
|
|
8169
8127
|
}
|
|
8170
8128
|
const entityStageId = entity[ENTITY_STAGE_ATTRIBUTE]?.id;
|
|
8171
8129
|
const canTransition = stagePermissions2.can(STAGE_TRANSITION_UID, entityStageId);
|
|
8172
|
-
const [workflowCount,
|
|
8130
|
+
const [workflowCount, workflowResult] = await Promise.all([
|
|
8173
8131
|
workflowService.count(),
|
|
8174
8132
|
workflowService.getAssignedWorkflow(modelUID, {
|
|
8175
8133
|
populate: "stages"
|
|
8176
8134
|
})
|
|
8177
8135
|
]);
|
|
8136
|
+
const workflowStages = workflowResult ? workflowResult.stages : [];
|
|
8178
8137
|
const meta = {
|
|
8179
8138
|
stageCount: workflowStages.length,
|
|
8180
8139
|
workflowCount
|
|
@@ -8210,22 +8169,37 @@ const assignees = {
|
|
|
8210
8169
|
async updateEntity(ctx) {
|
|
8211
8170
|
const assigneeService = getService("assignees");
|
|
8212
8171
|
const workflowService = getService("workflows");
|
|
8172
|
+
const stagePermissions2 = getService("stage-permissions");
|
|
8213
8173
|
const { model_uid: model, id: documentId } = ctx.params;
|
|
8214
|
-
const
|
|
8174
|
+
const locale = await validateLocale(ctx.request.query?.locale) ?? void 0;
|
|
8215
8175
|
const { sanitizeOutput } = strapi.plugin("content-manager").service("permission-checker").create({ userAbility: ctx.state.userAbility, model });
|
|
8176
|
+
const entity = await strapi.documents(model).findOne({
|
|
8177
|
+
documentId,
|
|
8178
|
+
locale,
|
|
8179
|
+
populate: [ENTITY_STAGE_ATTRIBUTE]
|
|
8180
|
+
});
|
|
8181
|
+
if (!entity) {
|
|
8182
|
+
ctx.throw(404, "Entity not found");
|
|
8183
|
+
}
|
|
8184
|
+
const canTransitionStage = stagePermissions2.can(
|
|
8185
|
+
STAGE_TRANSITION_UID,
|
|
8186
|
+
entity[ENTITY_STAGE_ATTRIBUTE]?.id
|
|
8187
|
+
);
|
|
8188
|
+
if (!canTransitionStage) {
|
|
8189
|
+
ctx.throw(403, "Stage transition permission is required");
|
|
8190
|
+
}
|
|
8216
8191
|
const { id: assigneeId } = await validateUpdateAssigneeOnEntity(
|
|
8217
8192
|
ctx.request?.body?.data,
|
|
8218
8193
|
"You should pass a valid id to the body of the put request."
|
|
8219
8194
|
);
|
|
8220
|
-
await validateLocale(locale);
|
|
8221
8195
|
await workflowService.assertContentTypeBelongsToWorkflow(model);
|
|
8222
|
-
const
|
|
8196
|
+
const updatedEntity = await assigneeService.updateEntityAssignee(
|
|
8223
8197
|
documentId,
|
|
8224
8198
|
locale || null,
|
|
8225
8199
|
model,
|
|
8226
8200
|
assigneeId
|
|
8227
8201
|
);
|
|
8228
|
-
ctx.body = { data: await sanitizeOutput(
|
|
8202
|
+
ctx.body = { data: await sanitizeOutput(updatedEntity) };
|
|
8229
8203
|
}
|
|
8230
8204
|
};
|
|
8231
8205
|
const controllers = {
|