@strapi/content-manager 5.0.3 → 5.0.4
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/server/index.js +290 -129
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +290 -129
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts +2 -3
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/preview/controllers/index.d.ts +2 -0
- package/dist/server/src/preview/controllers/index.d.ts.map +1 -0
- package/dist/server/src/preview/controllers/preview.d.ts +13 -0
- package/dist/server/src/preview/controllers/preview.d.ts.map +1 -0
- package/dist/server/src/preview/controllers/validation/preview.d.ts +6 -0
- package/dist/server/src/preview/controllers/validation/preview.d.ts.map +1 -0
- package/dist/server/src/preview/index.d.ts.map +1 -1
- package/dist/server/src/preview/routes/index.d.ts +8 -0
- package/dist/server/src/preview/routes/index.d.ts.map +1 -0
- package/dist/server/src/preview/routes/preview.d.ts +4 -0
- package/dist/server/src/preview/routes/preview.d.ts.map +1 -0
- package/dist/server/src/preview/services/index.d.ts +15 -0
- package/dist/server/src/preview/services/index.d.ts.map +1 -0
- package/dist/server/src/preview/services/preview-config.d.ts +30 -0
- package/dist/server/src/preview/services/preview-config.d.ts.map +1 -0
- package/dist/server/src/preview/services/preview.d.ts +12 -0
- package/dist/server/src/preview/services/preview.d.ts.map +1 -0
- package/dist/server/src/preview/utils.d.ts +18 -0
- package/dist/server/src/preview/utils.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/shared/contracts/index.d.ts +1 -0
- package/dist/shared/contracts/index.d.ts.map +1 -1
- package/dist/shared/contracts/preview.d.ts +27 -0
- package/dist/shared/contracts/preview.d.ts.map +1 -0
- package/dist/shared/index.js +4 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/index.mjs +4 -0
- package/dist/shared/index.mjs.map +1 -1
- package/package.json +7 -7
package/dist/server/index.js
CHANGED
@@ -33,10 +33,10 @@ const isNil__default = /* @__PURE__ */ _interopDefault(isNil);
|
|
33
33
|
const ___default = /* @__PURE__ */ _interopDefault(_);
|
34
34
|
const qs__default = /* @__PURE__ */ _interopDefault(qs);
|
35
35
|
const slugify__default = /* @__PURE__ */ _interopDefault(slugify);
|
36
|
-
const getService$
|
36
|
+
const getService$2 = (name) => {
|
37
37
|
return strapi.plugin("content-manager").service(name);
|
38
38
|
};
|
39
|
-
function getService(strapi2, name) {
|
39
|
+
function getService$1(strapi2, name) {
|
40
40
|
return strapi2.service(`plugin::content-manager.${name}`);
|
41
41
|
}
|
42
42
|
const historyRestoreVersionSchema = yup__namespace.object().shape({
|
@@ -72,7 +72,7 @@ const createHistoryVersionController = ({ strapi: strapi2 }) => {
|
|
72
72
|
if (!isSingleType && (!contentTypeUid || !ctx.query.documentId)) {
|
73
73
|
throw new strapiUtils.errors.ForbiddenError("contentType and documentId are required");
|
74
74
|
}
|
75
|
-
const permissionChecker2 = getService$
|
75
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
76
76
|
userAbility: ctx.state.userAbility,
|
77
77
|
model: ctx.query.contentType
|
78
78
|
});
|
@@ -80,7 +80,7 @@ const createHistoryVersionController = ({ strapi: strapi2 }) => {
|
|
80
80
|
return ctx.forbidden();
|
81
81
|
}
|
82
82
|
const query = await permissionChecker2.sanitizeQuery(ctx.query);
|
83
|
-
const { results, pagination } = await getService(strapi2, "history").findVersionsPage({
|
83
|
+
const { results, pagination } = await getService$1(strapi2, "history").findVersionsPage({
|
84
84
|
query: {
|
85
85
|
...query,
|
86
86
|
...getValidPagination({ page: query.page, pageSize: query.pageSize })
|
@@ -105,14 +105,14 @@ const createHistoryVersionController = ({ strapi: strapi2 }) => {
|
|
105
105
|
async restoreVersion(ctx) {
|
106
106
|
const request = ctx.request;
|
107
107
|
await validateRestoreVersion(request.body, "contentType is required");
|
108
|
-
const permissionChecker2 = getService$
|
108
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
109
109
|
userAbility: ctx.state.userAbility,
|
110
110
|
model: request.body.contentType
|
111
111
|
});
|
112
112
|
if (permissionChecker2.cannot.update()) {
|
113
113
|
throw new strapiUtils.errors.ForbiddenError();
|
114
114
|
}
|
115
|
-
const restoredDocument = await getService(strapi2, "history").restoreVersion(
|
115
|
+
const restoredDocument = await getService$1(strapi2, "history").restoreVersion(
|
116
116
|
request.params.versionId
|
117
117
|
);
|
118
118
|
return {
|
@@ -121,7 +121,7 @@ const createHistoryVersionController = ({ strapi: strapi2 }) => {
|
|
121
121
|
}
|
122
122
|
};
|
123
123
|
};
|
124
|
-
const controllers$
|
124
|
+
const controllers$2 = {
|
125
125
|
"history-version": createHistoryVersionController
|
126
126
|
/**
|
127
127
|
* Casting is needed because the types aren't aware that Strapi supports
|
@@ -228,6 +228,17 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
|
|
228
228
|
const meta = await documentMetadataService.getMetadata(contentTypeUid, document);
|
229
229
|
return documentMetadataService.getStatus(document, meta.availableStatus);
|
230
230
|
};
|
231
|
+
const getComponentFields = (componentUID) => {
|
232
|
+
return Object.entries(strapi2.getModel(componentUID).attributes).reduce(
|
233
|
+
(fieldsAcc, [key, attribute]) => {
|
234
|
+
if (!["relation", "media", "component", "dynamiczone"].includes(attribute.type)) {
|
235
|
+
fieldsAcc.push(key);
|
236
|
+
}
|
237
|
+
return fieldsAcc;
|
238
|
+
},
|
239
|
+
[]
|
240
|
+
);
|
241
|
+
};
|
231
242
|
const getDeepPopulate2 = (uid2, useDatabaseSyntax = false) => {
|
232
243
|
const model = strapi2.getModel(uid2);
|
233
244
|
const attributes = Object.entries(model.attributes);
|
@@ -251,13 +262,19 @@ const createServiceUtils = ({ strapi: strapi2 }) => {
|
|
251
262
|
}
|
252
263
|
case "component": {
|
253
264
|
const populate = getDeepPopulate2(attribute.component);
|
254
|
-
acc[attributeName] = {
|
265
|
+
acc[attributeName] = {
|
266
|
+
populate,
|
267
|
+
[fieldSelector]: getComponentFields(attribute.component)
|
268
|
+
};
|
255
269
|
break;
|
256
270
|
}
|
257
271
|
case "dynamiczone": {
|
258
272
|
const populatedComponents = (attribute.components || []).reduce(
|
259
273
|
(acc2, componentUID) => {
|
260
|
-
acc2[componentUID] = {
|
274
|
+
acc2[componentUID] = {
|
275
|
+
populate: getDeepPopulate2(componentUID),
|
276
|
+
[fieldSelector]: getComponentFields(componentUID)
|
277
|
+
};
|
261
278
|
return acc2;
|
262
279
|
},
|
263
280
|
{}
|
@@ -370,7 +387,7 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
370
387
|
const attributeValue = entry.data[attributeKey];
|
371
388
|
const attributeValues = Array.isArray(attributeValue) ? attributeValue : [attributeValue];
|
372
389
|
if (attributeSchema.type === "media") {
|
373
|
-
const permissionChecker2 = getService$
|
390
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
374
391
|
userAbility: params.state.userAbility,
|
375
392
|
model: "plugin::upload.file"
|
376
393
|
});
|
@@ -411,7 +428,7 @@ const createHistoryService = ({ strapi: strapi2 }) => {
|
|
411
428
|
[attributeKey]: adminUsers
|
412
429
|
};
|
413
430
|
}
|
414
|
-
const permissionChecker2 = getService$
|
431
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
415
432
|
userAbility: params.state.userAbility,
|
416
433
|
model: attributeSchema.target
|
417
434
|
});
|
@@ -587,7 +604,7 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
|
|
587
604
|
onCommit(async () => {
|
588
605
|
for (const entry of localeEntries) {
|
589
606
|
const status = await serviceUtils.getVersionStatus(uid2, entry);
|
590
|
-
await getService(strapi2, "history").createVersion({
|
607
|
+
await getService$1(strapi2, "history").createVersion({
|
591
608
|
contentType: uid2,
|
592
609
|
data: fp.omit(FIELDS_TO_IGNORE, entry),
|
593
610
|
relatedDocumentId: documentId,
|
@@ -600,15 +617,19 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
|
|
600
617
|
});
|
601
618
|
return result;
|
602
619
|
});
|
603
|
-
state.deleteExpiredJob = nodeSchedule.scheduleJob("0 0 * * *", () => {
|
620
|
+
state.deleteExpiredJob = nodeSchedule.scheduleJob("historyDaily", "0 0 * * *", () => {
|
604
621
|
const retentionDaysInMilliseconds = serviceUtils.getRetentionDays() * 24 * 60 * 60 * 1e3;
|
605
622
|
const expirationDate = new Date(Date.now() - retentionDaysInMilliseconds);
|
606
623
|
strapi2.db.query(HISTORY_VERSION_UID).deleteMany({
|
607
624
|
where: {
|
608
625
|
created_at: {
|
609
|
-
$lt: expirationDate
|
626
|
+
$lt: expirationDate
|
610
627
|
}
|
611
628
|
}
|
629
|
+
}).catch((error) => {
|
630
|
+
if (error instanceof Error) {
|
631
|
+
strapi2.log.error("Error deleting expired history versions", error.message);
|
632
|
+
}
|
612
633
|
});
|
613
634
|
});
|
614
635
|
state.isInitialized = true;
|
@@ -620,17 +641,17 @@ const createLifecyclesService = ({ strapi: strapi2 }) => {
|
|
620
641
|
}
|
621
642
|
};
|
622
643
|
};
|
623
|
-
const services$
|
644
|
+
const services$2 = {
|
624
645
|
history: createHistoryService,
|
625
646
|
lifecycles: createLifecyclesService
|
626
647
|
};
|
627
|
-
const info = { pluginName: "content-manager", type: "admin" };
|
648
|
+
const info$1 = { pluginName: "content-manager", type: "admin" };
|
628
649
|
const historyVersionRouter = {
|
629
650
|
type: "admin",
|
630
651
|
routes: [
|
631
652
|
{
|
632
653
|
method: "GET",
|
633
|
-
info,
|
654
|
+
info: info$1,
|
634
655
|
path: "/history-versions",
|
635
656
|
handler: "history-version.findMany",
|
636
657
|
config: {
|
@@ -639,7 +660,7 @@ const historyVersionRouter = {
|
|
639
660
|
},
|
640
661
|
{
|
641
662
|
method: "PUT",
|
642
|
-
info,
|
663
|
+
info: info$1,
|
643
664
|
path: "/history-versions/:versionId/restore",
|
644
665
|
handler: "history-version.restoreVersion",
|
645
666
|
config: {
|
@@ -648,7 +669,7 @@ const historyVersionRouter = {
|
|
648
669
|
}
|
649
670
|
]
|
650
671
|
};
|
651
|
-
const routes$
|
672
|
+
const routes$2 = {
|
652
673
|
"history-version": historyVersionRouter
|
653
674
|
};
|
654
675
|
const historyVersion = {
|
@@ -702,14 +723,14 @@ const getFeature$1 = () => {
|
|
702
723
|
strapi2.get("models").add(historyVersion);
|
703
724
|
},
|
704
725
|
bootstrap({ strapi: strapi2 }) {
|
705
|
-
getService(strapi2, "lifecycles").bootstrap();
|
726
|
+
getService$1(strapi2, "lifecycles").bootstrap();
|
706
727
|
},
|
707
728
|
destroy({ strapi: strapi2 }) {
|
708
|
-
getService(strapi2, "lifecycles").destroy();
|
729
|
+
getService$1(strapi2, "lifecycles").destroy();
|
709
730
|
},
|
710
|
-
controllers: controllers$
|
711
|
-
services: services$
|
712
|
-
routes: routes$
|
731
|
+
controllers: controllers$2,
|
732
|
+
services: services$2,
|
733
|
+
routes: routes$2
|
713
734
|
};
|
714
735
|
}
|
715
736
|
return {
|
@@ -727,6 +748,138 @@ const ALLOWED_WEBHOOK_EVENTS = {
|
|
727
748
|
ENTRY_UNPUBLISH: "entry.unpublish"
|
728
749
|
};
|
729
750
|
const FEATURE_ID = "preview";
|
751
|
+
const info = { pluginName: "content-manager", type: "admin" };
|
752
|
+
const previewRouter = {
|
753
|
+
type: "admin",
|
754
|
+
routes: [
|
755
|
+
{
|
756
|
+
method: "GET",
|
757
|
+
info,
|
758
|
+
path: "/preview/url/:contentType",
|
759
|
+
handler: "preview.getPreviewUrl",
|
760
|
+
config: {
|
761
|
+
policies: ["admin::isAuthenticatedAdmin"]
|
762
|
+
}
|
763
|
+
}
|
764
|
+
]
|
765
|
+
};
|
766
|
+
const routes$1 = {
|
767
|
+
preview: previewRouter
|
768
|
+
};
|
769
|
+
function getService(strapi2, name) {
|
770
|
+
return strapi2.service(`plugin::content-manager.${name}`);
|
771
|
+
}
|
772
|
+
const getPreviewUrlSchema = yup__namespace.object().shape({
|
773
|
+
// Will be undefined for single types
|
774
|
+
documentId: yup__namespace.string(),
|
775
|
+
locale: yup__namespace.string().nullable(),
|
776
|
+
status: yup__namespace.string()
|
777
|
+
}).required();
|
778
|
+
const validatePreviewUrl = async (strapi2, uid2, params) => {
|
779
|
+
await strapiUtils.validateYupSchema(getPreviewUrlSchema)(params);
|
780
|
+
const newParams = fp.pick(["documentId", "locale", "status"], params);
|
781
|
+
const model = strapi2.getModel(uid2);
|
782
|
+
if (!model || model.modelType !== "contentType") {
|
783
|
+
throw new strapiUtils.errors.ValidationError("Invalid content type");
|
784
|
+
}
|
785
|
+
const isSingleType = model?.kind === "singleType";
|
786
|
+
if (!isSingleType && !params.documentId) {
|
787
|
+
throw new strapiUtils.errors.ValidationError("documentId is required for Collection Types");
|
788
|
+
}
|
789
|
+
if (isSingleType) {
|
790
|
+
const doc = await strapi2.documents(uid2).findFirst();
|
791
|
+
if (!doc) {
|
792
|
+
throw new strapiUtils.errors.NotFoundError("Document not found");
|
793
|
+
}
|
794
|
+
newParams.documentId = doc?.documentId;
|
795
|
+
}
|
796
|
+
return newParams;
|
797
|
+
};
|
798
|
+
const createPreviewController = () => {
|
799
|
+
return {
|
800
|
+
/**
|
801
|
+
* Transforms an entry into a preview URL, so that it can be previewed
|
802
|
+
* in the Content Manager.
|
803
|
+
*/
|
804
|
+
async getPreviewUrl(ctx) {
|
805
|
+
const uid2 = ctx.params.contentType;
|
806
|
+
const query = ctx.request.query;
|
807
|
+
const params = await validatePreviewUrl(strapi, uid2, query);
|
808
|
+
const previewService = getService(strapi, "preview");
|
809
|
+
const url = await previewService.getPreviewUrl(uid2, params);
|
810
|
+
if (!url) {
|
811
|
+
ctx.status = 204;
|
812
|
+
}
|
813
|
+
return {
|
814
|
+
data: { url }
|
815
|
+
};
|
816
|
+
}
|
817
|
+
};
|
818
|
+
};
|
819
|
+
const controllers$1 = {
|
820
|
+
preview: createPreviewController
|
821
|
+
/**
|
822
|
+
* Casting is needed because the types aren't aware that Strapi supports
|
823
|
+
* passing a controller factory as the value, instead of a controller object directly
|
824
|
+
*/
|
825
|
+
};
|
826
|
+
const createPreviewService = ({ strapi: strapi2 }) => {
|
827
|
+
const config = getService(strapi2, "preview-config");
|
828
|
+
return {
|
829
|
+
async getPreviewUrl(uid2, params) {
|
830
|
+
const handler = config.getPreviewHandler();
|
831
|
+
try {
|
832
|
+
return handler(uid2, params);
|
833
|
+
} catch (error) {
|
834
|
+
strapi2.log.error(`Failed to get preview URL: ${error}`);
|
835
|
+
throw new strapiUtils.errors.ApplicationError("Failed to get preview URL");
|
836
|
+
}
|
837
|
+
return;
|
838
|
+
}
|
839
|
+
};
|
840
|
+
};
|
841
|
+
const createPreviewConfigService = ({ strapi: strapi2 }) => {
|
842
|
+
return {
|
843
|
+
isEnabled() {
|
844
|
+
const config = strapi2.config.get("admin.preview");
|
845
|
+
if (!config) {
|
846
|
+
return false;
|
847
|
+
}
|
848
|
+
return config?.enabled ?? true;
|
849
|
+
},
|
850
|
+
/**
|
851
|
+
* Validate if the configuration is valid
|
852
|
+
*/
|
853
|
+
validate() {
|
854
|
+
if (!this.isEnabled()) {
|
855
|
+
return;
|
856
|
+
}
|
857
|
+
const handler = this.getPreviewHandler();
|
858
|
+
if (typeof handler !== "function") {
|
859
|
+
throw new strapiUtils.errors.ValidationError(
|
860
|
+
"Preview configuration is invalid. Handler must be a function"
|
861
|
+
);
|
862
|
+
}
|
863
|
+
},
|
864
|
+
/**
|
865
|
+
* Utility to get the preview handler from the configuration
|
866
|
+
*/
|
867
|
+
getPreviewHandler() {
|
868
|
+
const config = strapi2.config.get("admin.preview");
|
869
|
+
const emptyHandler = () => {
|
870
|
+
return void 0;
|
871
|
+
};
|
872
|
+
if (!this.isEnabled()) {
|
873
|
+
return emptyHandler;
|
874
|
+
}
|
875
|
+
return config?.config?.handler || emptyHandler;
|
876
|
+
}
|
877
|
+
};
|
878
|
+
};
|
879
|
+
const services$1 = {
|
880
|
+
preview: createPreviewService,
|
881
|
+
"preview-config": createPreviewConfigService
|
882
|
+
};
|
730
883
|
const getFeature = () => {
|
731
884
|
if (!strapi.features.future.isEnabled(FEATURE_ID)) {
|
732
885
|
return {};
|
@@ -734,7 +887,12 @@ const getFeature = () => {
|
|
734
887
|
return {
|
735
888
|
bootstrap() {
|
736
889
|
console.log("Bootstrapping preview server");
|
737
|
-
|
890
|
+
const config = getService(strapi, "preview-config");
|
891
|
+
config.validate();
|
892
|
+
},
|
893
|
+
routes: routes$1,
|
894
|
+
controllers: controllers$1,
|
895
|
+
services: services$1
|
738
896
|
};
|
739
897
|
};
|
740
898
|
const preview = getFeature();
|
@@ -742,10 +900,10 @@ const bootstrap = async () => {
|
|
742
900
|
Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {
|
743
901
|
strapi.get("webhookStore").addAllowedEvent(key, value);
|
744
902
|
});
|
745
|
-
getService$
|
746
|
-
await getService$
|
747
|
-
await getService$
|
748
|
-
await getService$
|
903
|
+
getService$2("field-sizes").setCustomFieldInputSizes();
|
904
|
+
await getService$2("components").syncConfigurations();
|
905
|
+
await getService$2("content-types").syncConfigurations();
|
906
|
+
await getService$2("permission").registerPermissions();
|
749
907
|
await history.bootstrap?.({ strapi });
|
750
908
|
await preview.bootstrap?.({ strapi });
|
751
909
|
};
|
@@ -1237,7 +1395,8 @@ const admin = {
|
|
1237
1395
|
};
|
1238
1396
|
const routes = {
|
1239
1397
|
admin,
|
1240
|
-
...history.routes ? history.routes : {}
|
1398
|
+
...history.routes ? history.routes : {},
|
1399
|
+
...preview.routes ? preview.routes : {}
|
1241
1400
|
};
|
1242
1401
|
const hasPermissionsSchema = strapiUtils.yup.object({
|
1243
1402
|
actions: strapiUtils.yup.array().of(strapiUtils.yup.string()),
|
@@ -1494,7 +1653,7 @@ const createMetadasSchema = (schema) => {
|
|
1494
1653
|
if (!value) {
|
1495
1654
|
return strapiUtils.yup.string();
|
1496
1655
|
}
|
1497
|
-
const targetSchema = getService$
|
1656
|
+
const targetSchema = getService$2("content-types").findContentType(
|
1498
1657
|
schema.attributes[key].targetModel
|
1499
1658
|
);
|
1500
1659
|
if (!targetSchema) {
|
@@ -1663,7 +1822,7 @@ const getDocumentLocaleAndStatus = async (request, model, opts = { allowMultiple
|
|
1663
1822
|
}
|
1664
1823
|
};
|
1665
1824
|
const formatDocumentWithMetadata = async (permissionChecker2, uid2, document, opts = {}) => {
|
1666
|
-
const documentMetadata2 = getService$
|
1825
|
+
const documentMetadata2 = getService$2("document-metadata");
|
1667
1826
|
const serviceOutput = await documentMetadata2.formatDocumentWithMetadata(uid2, document, opts);
|
1668
1827
|
let {
|
1669
1828
|
meta: { availableLocales, availableStatus }
|
@@ -1689,8 +1848,8 @@ const createDocument = async (ctx, opts) => {
|
|
1689
1848
|
const { userAbility, user } = ctx.state;
|
1690
1849
|
const { model } = ctx.params;
|
1691
1850
|
const { body } = ctx.request;
|
1692
|
-
const documentManager2 = getService$
|
1693
|
-
const permissionChecker2 = getService$
|
1851
|
+
const documentManager2 = getService$2("document-manager");
|
1852
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1694
1853
|
if (permissionChecker2.cannot.create()) {
|
1695
1854
|
throw new strapiUtils.errors.ForbiddenError();
|
1696
1855
|
}
|
@@ -1710,13 +1869,13 @@ const updateDocument = async (ctx, opts) => {
|
|
1710
1869
|
const { userAbility, user } = ctx.state;
|
1711
1870
|
const { id, model } = ctx.params;
|
1712
1871
|
const { body } = ctx.request;
|
1713
|
-
const documentManager2 = getService$
|
1714
|
-
const permissionChecker2 = getService$
|
1872
|
+
const documentManager2 = getService$2("document-manager");
|
1873
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1715
1874
|
if (permissionChecker2.cannot.update()) {
|
1716
1875
|
throw new strapiUtils.errors.ForbiddenError();
|
1717
1876
|
}
|
1718
1877
|
const permissionQuery = await permissionChecker2.sanitizedQuery.update(ctx.query);
|
1719
|
-
const populate = await getService$
|
1878
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
1720
1879
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
1721
1880
|
const [documentVersion, documentExists] = await Promise.all([
|
1722
1881
|
documentManager2.findOne(id, model, { populate, locale, status: "draft" }),
|
@@ -1747,14 +1906,14 @@ const collectionTypes = {
|
|
1747
1906
|
const { userAbility } = ctx.state;
|
1748
1907
|
const { model } = ctx.params;
|
1749
1908
|
const { query } = ctx.request;
|
1750
|
-
const documentMetadata2 = getService$
|
1751
|
-
const documentManager2 = getService$
|
1752
|
-
const permissionChecker2 = getService$
|
1909
|
+
const documentMetadata2 = getService$2("document-metadata");
|
1910
|
+
const documentManager2 = getService$2("document-manager");
|
1911
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1753
1912
|
if (permissionChecker2.cannot.read()) {
|
1754
1913
|
return ctx.forbidden();
|
1755
1914
|
}
|
1756
1915
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(query);
|
1757
|
-
const populate = await getService$
|
1916
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(1).countRelations({ toOne: false, toMany: true }).build();
|
1758
1917
|
const { locale, status } = await getDocumentLocaleAndStatus(query, model);
|
1759
1918
|
const { results: documents, pagination } = await documentManager2.findPage(
|
1760
1919
|
{ ...permissionQuery, populate, locale, status },
|
@@ -1783,13 +1942,13 @@ const collectionTypes = {
|
|
1783
1942
|
async findOne(ctx) {
|
1784
1943
|
const { userAbility } = ctx.state;
|
1785
1944
|
const { model, id } = ctx.params;
|
1786
|
-
const documentManager2 = getService$
|
1787
|
-
const permissionChecker2 = getService$
|
1945
|
+
const documentManager2 = getService$2("document-manager");
|
1946
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1788
1947
|
if (permissionChecker2.cannot.read()) {
|
1789
1948
|
return ctx.forbidden();
|
1790
1949
|
}
|
1791
1950
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(ctx.query);
|
1792
|
-
const populate = await getService$
|
1951
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(Infinity).countRelations().build();
|
1793
1952
|
const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);
|
1794
1953
|
const version = await documentManager2.findOne(id, model, {
|
1795
1954
|
populate,
|
@@ -1820,7 +1979,7 @@ const collectionTypes = {
|
|
1820
1979
|
async create(ctx) {
|
1821
1980
|
const { userAbility } = ctx.state;
|
1822
1981
|
const { model } = ctx.params;
|
1823
|
-
const permissionChecker2 = getService$
|
1982
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1824
1983
|
const [totalEntries, document] = await Promise.all([
|
1825
1984
|
strapi.db.query(model).count(),
|
1826
1985
|
createDocument(ctx)
|
@@ -1841,7 +2000,7 @@ const collectionTypes = {
|
|
1841
2000
|
async update(ctx) {
|
1842
2001
|
const { userAbility } = ctx.state;
|
1843
2002
|
const { model } = ctx.params;
|
1844
|
-
const permissionChecker2 = getService$
|
2003
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1845
2004
|
const updatedVersion = await updateDocument(ctx);
|
1846
2005
|
const sanitizedVersion = await permissionChecker2.sanitizeOutput(updatedVersion);
|
1847
2006
|
ctx.body = await formatDocumentWithMetadata(permissionChecker2, model, sanitizedVersion);
|
@@ -1850,13 +2009,13 @@ const collectionTypes = {
|
|
1850
2009
|
const { userAbility, user } = ctx.state;
|
1851
2010
|
const { model, sourceId: id } = ctx.params;
|
1852
2011
|
const { body } = ctx.request;
|
1853
|
-
const documentManager2 = getService$
|
1854
|
-
const permissionChecker2 = getService$
|
2012
|
+
const documentManager2 = getService$2("document-manager");
|
2013
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1855
2014
|
if (permissionChecker2.cannot.create()) {
|
1856
2015
|
return ctx.forbidden();
|
1857
2016
|
}
|
1858
2017
|
const permissionQuery = await permissionChecker2.sanitizedQuery.create(ctx.query);
|
1859
|
-
const populate = await getService$
|
2018
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
1860
2019
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
1861
2020
|
const document = await documentManager2.findOne(id, model, {
|
1862
2021
|
populate,
|
@@ -1895,13 +2054,13 @@ const collectionTypes = {
|
|
1895
2054
|
async delete(ctx) {
|
1896
2055
|
const { userAbility } = ctx.state;
|
1897
2056
|
const { id, model } = ctx.params;
|
1898
|
-
const documentManager2 = getService$
|
1899
|
-
const permissionChecker2 = getService$
|
2057
|
+
const documentManager2 = getService$2("document-manager");
|
2058
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1900
2059
|
if (permissionChecker2.cannot.delete()) {
|
1901
2060
|
return ctx.forbidden();
|
1902
2061
|
}
|
1903
2062
|
const permissionQuery = await permissionChecker2.sanitizedQuery.delete(ctx.query);
|
1904
|
-
const populate = await getService$
|
2063
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
1905
2064
|
const { locale } = await getDocumentLocaleAndStatus(ctx.query, model);
|
1906
2065
|
const documentLocales = await documentManager2.findLocales(id, model, { populate, locale });
|
1907
2066
|
if (documentLocales.length === 0) {
|
@@ -1923,14 +2082,14 @@ const collectionTypes = {
|
|
1923
2082
|
const { userAbility } = ctx.state;
|
1924
2083
|
const { id, model } = ctx.params;
|
1925
2084
|
const { body } = ctx.request;
|
1926
|
-
const documentManager2 = getService$
|
1927
|
-
const permissionChecker2 = getService$
|
2085
|
+
const documentManager2 = getService$2("document-manager");
|
2086
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1928
2087
|
if (permissionChecker2.cannot.publish()) {
|
1929
2088
|
return ctx.forbidden();
|
1930
2089
|
}
|
1931
2090
|
const publishedDocument = await strapi.db.transaction(async () => {
|
1932
2091
|
const permissionQuery = await permissionChecker2.sanitizedQuery.publish(ctx.query);
|
1933
|
-
const populate = await getService$
|
2092
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(Infinity).countRelations().build();
|
1934
2093
|
let document;
|
1935
2094
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
1936
2095
|
const isCreate = fp.isNil(id);
|
@@ -1978,13 +2137,13 @@ const collectionTypes = {
|
|
1978
2137
|
const { body } = ctx.request;
|
1979
2138
|
const { documentIds } = body;
|
1980
2139
|
await validateBulkActionInput(body);
|
1981
|
-
const documentManager2 = getService$
|
1982
|
-
const permissionChecker2 = getService$
|
2140
|
+
const documentManager2 = getService$2("document-manager");
|
2141
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
1983
2142
|
if (permissionChecker2.cannot.publish()) {
|
1984
2143
|
return ctx.forbidden();
|
1985
2144
|
}
|
1986
2145
|
const permissionQuery = await permissionChecker2.sanitizedQuery.publish(ctx.query);
|
1987
|
-
const populate = await getService$
|
2146
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).populateDeep(Infinity).countRelations().build();
|
1988
2147
|
const { locale } = await getDocumentLocaleAndStatus(body, model, {
|
1989
2148
|
allowMultipleLocales: true
|
1990
2149
|
});
|
@@ -2009,8 +2168,8 @@ const collectionTypes = {
|
|
2009
2168
|
const { body } = ctx.request;
|
2010
2169
|
const { documentIds } = body;
|
2011
2170
|
await validateBulkActionInput(body);
|
2012
|
-
const documentManager2 = getService$
|
2013
|
-
const permissionChecker2 = getService$
|
2171
|
+
const documentManager2 = getService$2("document-manager");
|
2172
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2014
2173
|
if (permissionChecker2.cannot.unpublish()) {
|
2015
2174
|
return ctx.forbidden();
|
2016
2175
|
}
|
@@ -2039,8 +2198,8 @@ const collectionTypes = {
|
|
2039
2198
|
const {
|
2040
2199
|
body: { discardDraft, ...body }
|
2041
2200
|
} = ctx.request;
|
2042
|
-
const documentManager2 = getService$
|
2043
|
-
const permissionChecker2 = getService$
|
2201
|
+
const documentManager2 = getService$2("document-manager");
|
2202
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2044
2203
|
if (permissionChecker2.cannot.unpublish()) {
|
2045
2204
|
return ctx.forbidden();
|
2046
2205
|
}
|
@@ -2048,7 +2207,7 @@ const collectionTypes = {
|
|
2048
2207
|
return ctx.forbidden();
|
2049
2208
|
}
|
2050
2209
|
const permissionQuery = await permissionChecker2.sanitizedQuery.unpublish(ctx.query);
|
2051
|
-
const populate = await getService$
|
2210
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2052
2211
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
2053
2212
|
const document = await documentManager2.findOne(id, model, {
|
2054
2213
|
populate,
|
@@ -2079,13 +2238,13 @@ const collectionTypes = {
|
|
2079
2238
|
const { userAbility } = ctx.state;
|
2080
2239
|
const { id, model } = ctx.params;
|
2081
2240
|
const { body } = ctx.request;
|
2082
|
-
const documentManager2 = getService$
|
2083
|
-
const permissionChecker2 = getService$
|
2241
|
+
const documentManager2 = getService$2("document-manager");
|
2242
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2084
2243
|
if (permissionChecker2.cannot.discard()) {
|
2085
2244
|
return ctx.forbidden();
|
2086
2245
|
}
|
2087
2246
|
const permissionQuery = await permissionChecker2.sanitizedQuery.discard(ctx.query);
|
2088
|
-
const populate = await getService$
|
2247
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2089
2248
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
2090
2249
|
const document = await documentManager2.findOne(id, model, {
|
2091
2250
|
populate,
|
@@ -2110,13 +2269,13 @@ const collectionTypes = {
|
|
2110
2269
|
const { query, body } = ctx.request;
|
2111
2270
|
const { documentIds } = body;
|
2112
2271
|
await validateBulkActionInput(body);
|
2113
|
-
const documentManager2 = getService$
|
2114
|
-
const permissionChecker2 = getService$
|
2272
|
+
const documentManager2 = getService$2("document-manager");
|
2273
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2115
2274
|
if (permissionChecker2.cannot.delete()) {
|
2116
2275
|
return ctx.forbidden();
|
2117
2276
|
}
|
2118
2277
|
const permissionQuery = await permissionChecker2.sanitizedQuery.delete(query);
|
2119
|
-
const populate = await getService$
|
2278
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2120
2279
|
const { locale } = await getDocumentLocaleAndStatus(body, model);
|
2121
2280
|
const documentLocales = await documentManager2.findLocales(documentIds, model, {
|
2122
2281
|
populate,
|
@@ -2137,13 +2296,13 @@ const collectionTypes = {
|
|
2137
2296
|
async countDraftRelations(ctx) {
|
2138
2297
|
const { userAbility } = ctx.state;
|
2139
2298
|
const { model, id } = ctx.params;
|
2140
|
-
const documentManager2 = getService$
|
2141
|
-
const permissionChecker2 = getService$
|
2299
|
+
const documentManager2 = getService$2("document-manager");
|
2300
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2142
2301
|
if (permissionChecker2.cannot.read()) {
|
2143
2302
|
return ctx.forbidden();
|
2144
2303
|
}
|
2145
2304
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(ctx.query);
|
2146
|
-
const populate = await getService$
|
2305
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2147
2306
|
const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);
|
2148
2307
|
const entity = await documentManager2.findOne(id, model, { populate, locale, status });
|
2149
2308
|
if (!entity) {
|
@@ -2162,8 +2321,8 @@ const collectionTypes = {
|
|
2162
2321
|
const ids = ctx.request.query.documentIds;
|
2163
2322
|
const locale = ctx.request.query.locale;
|
2164
2323
|
const { model } = ctx.params;
|
2165
|
-
const documentManager2 = getService$
|
2166
|
-
const permissionChecker2 = getService$
|
2324
|
+
const documentManager2 = getService$2("document-manager");
|
2325
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2167
2326
|
if (permissionChecker2.cannot.read()) {
|
2168
2327
|
return ctx.forbidden();
|
2169
2328
|
}
|
@@ -2187,13 +2346,13 @@ const collectionTypes = {
|
|
2187
2346
|
};
|
2188
2347
|
const components$1 = {
|
2189
2348
|
findComponents(ctx) {
|
2190
|
-
const components2 = getService$
|
2191
|
-
const { toDto } = getService$
|
2349
|
+
const components2 = getService$2("components").findAllComponents();
|
2350
|
+
const { toDto } = getService$2("data-mapper");
|
2192
2351
|
ctx.body = { data: components2.map(toDto) };
|
2193
2352
|
},
|
2194
2353
|
async findComponentConfiguration(ctx) {
|
2195
2354
|
const { uid: uid2 } = ctx.params;
|
2196
|
-
const componentService = getService$
|
2355
|
+
const componentService = getService$2("components");
|
2197
2356
|
const component = componentService.findComponent(uid2);
|
2198
2357
|
if (!component) {
|
2199
2358
|
return ctx.notFound("component.notFound");
|
@@ -2210,7 +2369,7 @@ const components$1 = {
|
|
2210
2369
|
async updateComponentConfiguration(ctx) {
|
2211
2370
|
const { uid: uid2 } = ctx.params;
|
2212
2371
|
const { body } = ctx.request;
|
2213
|
-
const componentService = getService$
|
2372
|
+
const componentService = getService$2("components");
|
2214
2373
|
const component = componentService.findComponent(uid2);
|
2215
2374
|
if (!component) {
|
2216
2375
|
return ctx.notFound("component.notFound");
|
@@ -2244,12 +2403,12 @@ const contentTypes = {
|
|
2244
2403
|
} catch (error) {
|
2245
2404
|
return ctx.send({ error }, 400);
|
2246
2405
|
}
|
2247
|
-
const contentTypes2 = getService$
|
2248
|
-
const { toDto } = getService$
|
2406
|
+
const contentTypes2 = getService$2("content-types").findContentTypesByKind(kind);
|
2407
|
+
const { toDto } = getService$2("data-mapper");
|
2249
2408
|
ctx.body = { data: contentTypes2.map(toDto) };
|
2250
2409
|
},
|
2251
2410
|
async findContentTypesSettings(ctx) {
|
2252
|
-
const { findAllContentTypes, findConfiguration } = getService$
|
2411
|
+
const { findAllContentTypes, findConfiguration } = getService$2("content-types");
|
2253
2412
|
const contentTypes2 = await findAllContentTypes();
|
2254
2413
|
const configurations = await Promise.all(
|
2255
2414
|
contentTypes2.map(async (contentType) => {
|
@@ -2263,7 +2422,7 @@ const contentTypes = {
|
|
2263
2422
|
},
|
2264
2423
|
async findContentTypeConfiguration(ctx) {
|
2265
2424
|
const { uid: uid2 } = ctx.params;
|
2266
|
-
const contentTypeService = getService$
|
2425
|
+
const contentTypeService = getService$2("content-types");
|
2267
2426
|
const contentType = await contentTypeService.findContentType(uid2);
|
2268
2427
|
if (!contentType) {
|
2269
2428
|
return ctx.notFound("contentType.notFound");
|
@@ -2285,13 +2444,13 @@ const contentTypes = {
|
|
2285
2444
|
const { userAbility } = ctx.state;
|
2286
2445
|
const { uid: uid2 } = ctx.params;
|
2287
2446
|
const { body } = ctx.request;
|
2288
|
-
const contentTypeService = getService$
|
2289
|
-
const metricsService = getService$
|
2447
|
+
const contentTypeService = getService$2("content-types");
|
2448
|
+
const metricsService = getService$2("metrics");
|
2290
2449
|
const contentType = await contentTypeService.findContentType(uid2);
|
2291
2450
|
if (!contentType) {
|
2292
2451
|
return ctx.notFound("contentType.notFound");
|
2293
2452
|
}
|
2294
|
-
if (!getService$
|
2453
|
+
if (!getService$2("permission").canConfigureContentType({ userAbility, contentType })) {
|
2295
2454
|
return ctx.forbidden();
|
2296
2455
|
}
|
2297
2456
|
let input;
|
@@ -2324,10 +2483,10 @@ const contentTypes = {
|
|
2324
2483
|
};
|
2325
2484
|
const init = {
|
2326
2485
|
getInitData(ctx) {
|
2327
|
-
const { toDto } = getService$
|
2328
|
-
const { findAllComponents } = getService$
|
2329
|
-
const { getAllFieldSizes } = getService$
|
2330
|
-
const { findAllContentTypes } = getService$
|
2486
|
+
const { toDto } = getService$2("data-mapper");
|
2487
|
+
const { findAllComponents } = getService$2("components");
|
2488
|
+
const { getAllFieldSizes } = getService$2("field-sizes");
|
2489
|
+
const { findAllContentTypes } = getService$2("content-types");
|
2331
2490
|
ctx.body = {
|
2332
2491
|
data: {
|
2333
2492
|
fieldSizes: getAllFieldSizes(),
|
@@ -2363,7 +2522,7 @@ const addFiltersClause = (params, filtersClause) => {
|
|
2363
2522
|
params.filters.$and.push(filtersClause);
|
2364
2523
|
};
|
2365
2524
|
const sanitizeMainField = (model, mainField, userAbility) => {
|
2366
|
-
const permissionChecker2 = getService$
|
2525
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
2367
2526
|
userAbility,
|
2368
2527
|
model: model.uid
|
2369
2528
|
});
|
@@ -2381,7 +2540,7 @@ const addStatusToRelations = async (targetUid, relations2) => {
|
|
2381
2540
|
if (!strapiUtils.contentTypes.hasDraftAndPublish(strapi.getModel(targetUid))) {
|
2382
2541
|
return relations2;
|
2383
2542
|
}
|
2384
|
-
const documentMetadata2 = getService$
|
2543
|
+
const documentMetadata2 = getService$2("document-metadata");
|
2385
2544
|
if (!relations2.length) {
|
2386
2545
|
return relations2;
|
2387
2546
|
}
|
@@ -2459,7 +2618,7 @@ const relations = {
|
|
2459
2618
|
ctx.request?.query?.locale
|
2460
2619
|
);
|
2461
2620
|
const { status } = validateStatus(sourceUid, ctx.request?.query?.status);
|
2462
|
-
const permissionChecker2 = getService$
|
2621
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
2463
2622
|
userAbility,
|
2464
2623
|
model
|
2465
2624
|
});
|
@@ -2484,7 +2643,7 @@ const relations = {
|
|
2484
2643
|
where.id = id;
|
2485
2644
|
}
|
2486
2645
|
const permissionQuery = await permissionChecker2.sanitizedQuery.read(ctx.query);
|
2487
|
-
const populate = await getService$
|
2646
|
+
const populate = await getService$2("populate-builder")(model).populateFromQuery(permissionQuery).build();
|
2488
2647
|
const currentEntity = await strapi.db.query(model).findOne({
|
2489
2648
|
where,
|
2490
2649
|
populate
|
@@ -2499,7 +2658,7 @@ const relations = {
|
|
2499
2658
|
}
|
2500
2659
|
entryId = currentEntity.id;
|
2501
2660
|
}
|
2502
|
-
const modelConfig = isComponent2 ? await getService$
|
2661
|
+
const modelConfig = isComponent2 ? await getService$2("components").findConfiguration(sourceSchema) : await getService$2("content-types").findConfiguration(sourceSchema);
|
2503
2662
|
const targetSchema = strapi.getModel(targetUid);
|
2504
2663
|
const mainField = fp.flow(
|
2505
2664
|
fp.prop(`metadatas.${targetField}.edit.mainField`),
|
@@ -2553,7 +2712,7 @@ const relations = {
|
|
2553
2712
|
}
|
2554
2713
|
} = await this.extractAndValidateRequestInfo(ctx, id);
|
2555
2714
|
const { idsToOmit, idsToInclude, _q, ...query } = ctx.request.query;
|
2556
|
-
const permissionChecker2 = getService$
|
2715
|
+
const permissionChecker2 = getService$2("permission-checker").create({
|
2557
2716
|
userAbility: ctx.state.userAbility,
|
2558
2717
|
model: targetUid
|
2559
2718
|
});
|
@@ -2632,7 +2791,7 @@ const relations = {
|
|
2632
2791
|
} = await this.extractAndValidateRequestInfo(ctx, id);
|
2633
2792
|
const { uid: sourceUid } = sourceSchema;
|
2634
2793
|
const { uid: targetUid } = targetSchema;
|
2635
|
-
const permissionQuery = await getService$
|
2794
|
+
const permissionQuery = await getService$2("permission-checker").create({ userAbility, model: targetUid }).sanitizedQuery.read({ fields: fieldsToSelect });
|
2636
2795
|
const dbQuery = strapi.db.query(sourceUid);
|
2637
2796
|
const loadRelations = strapiUtils.relations.isAnyToMany(attribute) ? (...args) => dbQuery.loadPages(...args) : (...args) => dbQuery.load(...args).then((res2) => ({ results: res2 ? [res2] : [] }));
|
2638
2797
|
const filters = {};
|
@@ -2673,10 +2832,10 @@ const relations = {
|
|
2673
2832
|
}
|
2674
2833
|
};
|
2675
2834
|
const buildPopulateFromQuery = async (query, model) => {
|
2676
|
-
return getService$
|
2835
|
+
return getService$2("populate-builder")(model).populateFromQuery(query).populateDeep(Infinity).countRelations().build();
|
2677
2836
|
};
|
2678
2837
|
const findDocument = async (query, uid2, opts = {}) => {
|
2679
|
-
const documentManager2 = getService$
|
2838
|
+
const documentManager2 = getService$2("document-manager");
|
2680
2839
|
const populate = await buildPopulateFromQuery(query, uid2);
|
2681
2840
|
return documentManager2.findMany({ ...opts, populate }, uid2).then((documents) => documents[0]);
|
2682
2841
|
};
|
@@ -2684,8 +2843,8 @@ const createOrUpdateDocument = async (ctx, opts) => {
|
|
2684
2843
|
const { user, userAbility } = ctx.state;
|
2685
2844
|
const { model } = ctx.params;
|
2686
2845
|
const { body, query } = ctx.request;
|
2687
|
-
const documentManager2 = getService$
|
2688
|
-
const permissionChecker2 = getService$
|
2846
|
+
const documentManager2 = getService$2("document-manager");
|
2847
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2689
2848
|
if (permissionChecker2.cannot.create() && permissionChecker2.cannot.update()) {
|
2690
2849
|
throw new strapiUtils.errors.ForbiddenError();
|
2691
2850
|
}
|
@@ -2726,7 +2885,7 @@ const singleTypes = {
|
|
2726
2885
|
const { userAbility } = ctx.state;
|
2727
2886
|
const { model } = ctx.params;
|
2728
2887
|
const { query = {} } = ctx.request;
|
2729
|
-
const permissionChecker2 = getService$
|
2888
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2730
2889
|
if (permissionChecker2.cannot.read()) {
|
2731
2890
|
return ctx.forbidden();
|
2732
2891
|
}
|
@@ -2760,7 +2919,7 @@ const singleTypes = {
|
|
2760
2919
|
async createOrUpdate(ctx) {
|
2761
2920
|
const { userAbility } = ctx.state;
|
2762
2921
|
const { model } = ctx.params;
|
2763
|
-
const permissionChecker2 = getService$
|
2922
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2764
2923
|
const document = await createOrUpdateDocument(ctx);
|
2765
2924
|
const sanitizedDocument = await permissionChecker2.sanitizeOutput(document);
|
2766
2925
|
ctx.body = await formatDocumentWithMetadata(permissionChecker2, model, sanitizedDocument);
|
@@ -2769,8 +2928,8 @@ const singleTypes = {
|
|
2769
2928
|
const { userAbility } = ctx.state;
|
2770
2929
|
const { model } = ctx.params;
|
2771
2930
|
const { query = {} } = ctx.request;
|
2772
|
-
const documentManager2 = getService$
|
2773
|
-
const permissionChecker2 = getService$
|
2931
|
+
const documentManager2 = getService$2("document-manager");
|
2932
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2774
2933
|
if (permissionChecker2.cannot.delete()) {
|
2775
2934
|
return ctx.forbidden();
|
2776
2935
|
}
|
@@ -2798,8 +2957,8 @@ const singleTypes = {
|
|
2798
2957
|
const { userAbility } = ctx.state;
|
2799
2958
|
const { model } = ctx.params;
|
2800
2959
|
const { query = {} } = ctx.request;
|
2801
|
-
const documentManager2 = getService$
|
2802
|
-
const permissionChecker2 = getService$
|
2960
|
+
const documentManager2 = getService$2("document-manager");
|
2961
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2803
2962
|
if (permissionChecker2.cannot.publish()) {
|
2804
2963
|
return ctx.forbidden();
|
2805
2964
|
}
|
@@ -2827,8 +2986,8 @@ const singleTypes = {
|
|
2827
2986
|
body: { discardDraft, ...body },
|
2828
2987
|
query = {}
|
2829
2988
|
} = ctx.request;
|
2830
|
-
const documentManager2 = getService$
|
2831
|
-
const permissionChecker2 = getService$
|
2989
|
+
const documentManager2 = getService$2("document-manager");
|
2990
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2832
2991
|
if (permissionChecker2.cannot.unpublish()) {
|
2833
2992
|
return ctx.forbidden();
|
2834
2993
|
}
|
@@ -2862,8 +3021,8 @@ const singleTypes = {
|
|
2862
3021
|
const { userAbility } = ctx.state;
|
2863
3022
|
const { model } = ctx.params;
|
2864
3023
|
const { body, query = {} } = ctx.request;
|
2865
|
-
const documentManager2 = getService$
|
2866
|
-
const permissionChecker2 = getService$
|
3024
|
+
const documentManager2 = getService$2("document-manager");
|
3025
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2867
3026
|
if (permissionChecker2.cannot.discard()) {
|
2868
3027
|
return ctx.forbidden();
|
2869
3028
|
}
|
@@ -2886,8 +3045,8 @@ const singleTypes = {
|
|
2886
3045
|
const { userAbility } = ctx.state;
|
2887
3046
|
const { model } = ctx.params;
|
2888
3047
|
const { query } = ctx.request;
|
2889
|
-
const documentManager2 = getService$
|
2890
|
-
const permissionChecker2 = getService$
|
3048
|
+
const documentManager2 = getService$2("document-manager");
|
3049
|
+
const permissionChecker2 = getService$2("permission-checker").create({ userAbility, model });
|
2891
3050
|
const { locale } = await getDocumentLocaleAndStatus(query, model);
|
2892
3051
|
if (permissionChecker2.cannot.read()) {
|
2893
3052
|
return ctx.forbidden();
|
@@ -2911,7 +3070,7 @@ const uid$1 = {
|
|
2911
3070
|
const { query = {} } = ctx.request;
|
2912
3071
|
const { locale } = await getDocumentLocaleAndStatus(query, contentTypeUID);
|
2913
3072
|
await validateUIDField(contentTypeUID, field);
|
2914
|
-
const uidService = getService$
|
3073
|
+
const uidService = getService$2("uid");
|
2915
3074
|
ctx.body = {
|
2916
3075
|
data: await uidService.generateUIDField({ contentTypeUID, field, data, locale })
|
2917
3076
|
};
|
@@ -2923,7 +3082,7 @@ const uid$1 = {
|
|
2923
3082
|
const { query = {} } = ctx.request;
|
2924
3083
|
const { locale } = await getDocumentLocaleAndStatus(query, contentTypeUID);
|
2925
3084
|
await validateUIDField(contentTypeUID, field);
|
2926
|
-
const uidService = getService$
|
3085
|
+
const uidService = getService$2("uid");
|
2927
3086
|
const isAvailable = await uidService.checkUIDAvailability({
|
2928
3087
|
contentTypeUID,
|
2929
3088
|
field,
|
@@ -2944,7 +3103,8 @@ const controllers = {
|
|
2944
3103
|
relations,
|
2945
3104
|
"single-types": singleTypes,
|
2946
3105
|
uid: uid$1,
|
2947
|
-
...history.controllers ? history.controllers : {}
|
3106
|
+
...history.controllers ? history.controllers : {},
|
3107
|
+
...preview.controllers ? preview.controllers : {}
|
2948
3108
|
};
|
2949
3109
|
const keys = {
|
2950
3110
|
CONFIGURATION: "configuration"
|
@@ -3095,12 +3255,12 @@ async function syncMetadatas(configuration, schema) {
|
|
3095
3255
|
return ___default.default.assign(metasWithDefaults, updatedMetas);
|
3096
3256
|
}
|
3097
3257
|
const getTargetSchema = (targetModel) => {
|
3098
|
-
return getService$
|
3258
|
+
return getService$2("content-types").findContentType(targetModel);
|
3099
3259
|
};
|
3100
3260
|
const DEFAULT_LIST_LENGTH = 4;
|
3101
3261
|
const MAX_ROW_SIZE = 12;
|
3102
3262
|
const isAllowedFieldSize = (type, size) => {
|
3103
|
-
const { getFieldSize } = getService$
|
3263
|
+
const { getFieldSize } = getService$2("field-sizes");
|
3104
3264
|
const fieldSize = getFieldSize(type);
|
3105
3265
|
if (!fieldSize.isResizable && size !== fieldSize.default) {
|
3106
3266
|
return false;
|
@@ -3108,7 +3268,7 @@ const isAllowedFieldSize = (type, size) => {
|
|
3108
3268
|
return size <= MAX_ROW_SIZE;
|
3109
3269
|
};
|
3110
3270
|
const getDefaultFieldSize = (attribute) => {
|
3111
|
-
const { hasFieldSize, getFieldSize } = getService$
|
3271
|
+
const { hasFieldSize, getFieldSize } = getService$2("field-sizes");
|
3112
3272
|
return getFieldSize(hasFieldSize(attribute.customField) ? attribute.customField : attribute.type).default;
|
3113
3273
|
};
|
3114
3274
|
async function createDefaultLayouts(schema) {
|
@@ -3143,7 +3303,7 @@ function syncLayouts(configuration, schema) {
|
|
3143
3303
|
for (const el of row) {
|
3144
3304
|
if (!hasEditableAttribute(schema, el.name))
|
3145
3305
|
continue;
|
3146
|
-
const { hasFieldSize } = getService$
|
3306
|
+
const { hasFieldSize } = getService$2("field-sizes");
|
3147
3307
|
const fieldType = hasFieldSize(schema.attributes[el.name].customField) ? schema.attributes[el.name].customField : schema.attributes[el.name].type;
|
3148
3308
|
if (!isAllowedFieldSize(fieldType, el.size)) {
|
3149
3309
|
elementsToReAppend.push(el.name);
|
@@ -3283,17 +3443,17 @@ const configurationService$1 = createConfigurationService({
|
|
3283
3443
|
isComponent: true,
|
3284
3444
|
prefix: STORE_KEY_PREFIX,
|
3285
3445
|
getModels() {
|
3286
|
-
const { toContentManagerModel } = getService$
|
3446
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3287
3447
|
return fp.mapValues(toContentManagerModel, strapi.components);
|
3288
3448
|
}
|
3289
3449
|
});
|
3290
3450
|
const components = ({ strapi: strapi2 }) => ({
|
3291
3451
|
findAllComponents() {
|
3292
|
-
const { toContentManagerModel } = getService$
|
3452
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3293
3453
|
return Object.values(strapi2.components).map(toContentManagerModel);
|
3294
3454
|
},
|
3295
3455
|
findComponent(uid2) {
|
3296
|
-
const { toContentManagerModel } = getService$
|
3456
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3297
3457
|
const component = strapi2.components[uid2];
|
3298
3458
|
return fp.isNil(component) ? component : toContentManagerModel(component);
|
3299
3459
|
},
|
@@ -3344,17 +3504,17 @@ const configurationService = createConfigurationService({
|
|
3344
3504
|
storeUtils,
|
3345
3505
|
prefix: "content_types",
|
3346
3506
|
getModels() {
|
3347
|
-
const { toContentManagerModel } = getService$
|
3507
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3348
3508
|
return fp.mapValues(toContentManagerModel, strapi.contentTypes);
|
3349
3509
|
}
|
3350
3510
|
});
|
3351
3511
|
const service = ({ strapi: strapi2 }) => ({
|
3352
3512
|
findAllContentTypes() {
|
3353
|
-
const { toContentManagerModel } = getService$
|
3513
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3354
3514
|
return Object.values(strapi2.contentTypes).map(toContentManagerModel);
|
3355
3515
|
},
|
3356
3516
|
findContentType(uid2) {
|
3357
|
-
const { toContentManagerModel } = getService$
|
3517
|
+
const { toContentManagerModel } = getService$2("data-mapper");
|
3358
3518
|
const contentType = strapi2.contentTypes[uid2];
|
3359
3519
|
return fp.isNil(contentType) ? contentType : toContentManagerModel(contentType);
|
3360
3520
|
},
|
@@ -3383,7 +3543,7 @@ const service = ({ strapi: strapi2 }) => ({
|
|
3383
3543
|
return this.findConfiguration(contentType);
|
3384
3544
|
},
|
3385
3545
|
findComponentsConfigurations(contentType) {
|
3386
|
-
return getService$
|
3546
|
+
return getService$2("components").findComponentsConfigurations(contentType);
|
3387
3547
|
},
|
3388
3548
|
syncConfigurations() {
|
3389
3549
|
return configurationService.syncConfigurations();
|
@@ -3655,7 +3815,7 @@ const permission = ({ strapi: strapi2 }) => ({
|
|
3655
3815
|
return userAbility.can(action);
|
3656
3816
|
},
|
3657
3817
|
async registerPermissions() {
|
3658
|
-
const displayedContentTypes = getService$
|
3818
|
+
const displayedContentTypes = getService$2("content-types").findDisplayedContentTypes();
|
3659
3819
|
const contentTypesUids = displayedContentTypes.map(fp.prop("uid"));
|
3660
3820
|
const actions = [
|
3661
3821
|
{
|
@@ -3931,7 +4091,7 @@ const getQueryPopulate = async (uid2, query) => {
|
|
3931
4091
|
return populateQuery;
|
3932
4092
|
};
|
3933
4093
|
const buildDeepPopulate = (uid2) => {
|
3934
|
-
return getService$
|
4094
|
+
return getService$2("populate-builder")(uid2).populateDeep(Infinity).countRelations().build();
|
3935
4095
|
};
|
3936
4096
|
const populateBuilder = (uid2) => {
|
3937
4097
|
let getInitialPopulate = async () => {
|
@@ -4474,7 +4634,8 @@ const services = {
|
|
4474
4634
|
permission,
|
4475
4635
|
"populate-builder": populateBuilder$1,
|
4476
4636
|
uid,
|
4477
|
-
...history.services ? history.services : {}
|
4637
|
+
...history.services ? history.services : {},
|
4638
|
+
...preview.services ? preview.services : {}
|
4478
4639
|
};
|
4479
4640
|
const index = () => {
|
4480
4641
|
return {
|