{"version":3,"file":"collection-types.mjs","sources":["../../../server/src/controllers/collection-types.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\n\nimport { setCreatorFields, async, errors } from '@strapi/utils';\nimport type { Modules, UID } from '@strapi/types';\n\nimport { getService } from '../utils';\nimport { validateBulkActionInput } from './validation';\nimport { getProhibitedCloningFields, excludeNotCreatableFields } from './utils/clone';\nimport { getDocumentLocaleAndStatus } from './validation/dimensions';\nimport { formatDocumentWithMetadata } from './utils/metadata';\n\ntype Options = Modules.Documents.Params.Pick;\n\n/**\n * Create a new document.\n *\n * @param ctx - Koa context\n * @param opts - Options\n * @param opts.populate - Populate options of the returned document.\n * By default documentManager will populate all relations.\n */\nconst createDocument = async (ctx: any, opts?: Options) => {\n const { userAbility, user } = ctx.state;\n const { model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n const pickPermittedFields = permissionChecker.sanitizeCreateInput;\n const setCreator = setCreatorFields({ user });\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any);\n const sanitizedBody = await sanitizeFn(body);\n\n const { locale, status } = await getDocumentLocaleAndStatus(body, model);\n\n return documentManager.create(model, {\n data: sanitizedBody as any,\n locale,\n status,\n populate: opts?.populate,\n });\n\n // TODO: Revert the creation if create permission conditions are not met\n // if (permissionChecker.cannot.create(document)) {\n // throw new errors.ForbiddenError();\n // }\n};\n\n/**\n * Update a document version.\n * - If the document version exists, it will be updated.\n * - If the document version does not exist, a new document locale will be created.\n * By default documentManager will populate all relations.\n *\n * @param ctx - Koa context\n * @param opts - Options\n * @param opts.populate - Populate options of the returned document\n */\nconst updateDocument = async (ctx: any, opts?: Options) => {\n const { userAbility, user } = ctx.state;\n const { id, model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.update()) {\n throw new errors.ForbiddenError();\n }\n\n // Populate necessary fields to check permissions\n const permissionQuery = await permissionChecker.sanitizedQuery.update(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n // Load document version to update\n const [documentVersion, documentExists] = await Promise.all([\n documentManager.findOne(id, model, { populate, locale, status: 'draft' }),\n documentManager.exists(model, id),\n ]);\n\n if (!documentExists) {\n throw new errors.NotFoundError();\n }\n\n // If version is not found, but document exists,\n // the intent is to create a new document locale\n if (documentVersion) {\n if (permissionChecker.cannot.update(documentVersion)) {\n throw new errors.ForbiddenError();\n }\n } else if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n const pickPermittedFields = documentVersion\n ? permissionChecker.sanitizeUpdateInput(documentVersion)\n : permissionChecker.sanitizeCreateInput;\n const setCreator = documentVersion\n ? setCreatorFields({ user, isEdition: true })\n : setCreatorFields({ user });\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any);\n const sanitizedBody = await sanitizeFn(body);\n\n return documentManager.update(documentVersion?.documentId || id, model, {\n data: sanitizedBody as any,\n populate: opts?.populate,\n locale,\n });\n};\n\nexport default {\n async find(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query } = ctx.request;\n\n const documentMetadata = getService('document-metadata');\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(query);\n\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(1)\n .countRelations({ toOne: false, toMany: true })\n .build();\n\n const { locale, status } = await getDocumentLocaleAndStatus(query, model);\n\n const { results: documents, pagination } = await documentManager.findPage(\n { ...permissionQuery, populate, locale, status },\n model\n );\n\n // TODO: Skip this part if not necessary (if D&P disabled or columns not displayed in the view)\n const documentsAvailableStatus = await documentMetadata.getManyAvailableStatus(\n model,\n documents\n );\n\n const setStatus = (document: any) => {\n // Available status of document\n const availableStatuses = documentsAvailableStatus.filter(\n (d: any) => d.documentId === document.documentId\n );\n // Compute document version status\n document.status = documentMetadata.getStatus(document, availableStatuses);\n return document;\n };\n\n const results = await async.map(\n documents,\n async.pipe(permissionChecker.sanitizeOutput, setStatus)\n );\n\n ctx.body = {\n results,\n pagination,\n };\n },\n\n async findOne(ctx: any) {\n const { userAbility } = ctx.state;\n const { model, id } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n\n const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);\n\n const version = await documentManager.findOne(id, model, {\n populate,\n locale,\n status,\n });\n\n if (!version) {\n // Check if document exists\n const exists = await documentManager.exists(model, id);\n if (!exists) {\n return ctx.notFound();\n }\n\n // If the requested locale doesn't exist, return an empty response\n const { meta } = await formatDocumentWithMetadata(\n permissionChecker,\n model,\n // @ts-expect-error TODO: fix\n { documentId: id, locale, publishedAt: null },\n { availableLocales: true, availableStatus: false }\n );\n\n ctx.body = { data: {}, meta };\n\n return;\n }\n\n // if the user has condition that needs populated content, it's not applied because entity don't have relations populated\n if (permissionChecker.cannot.read(version)) {\n return ctx.forbidden();\n }\n\n // TODO: Count populated relations by permissions\n const sanitizedDocument = await permissionChecker.sanitizeOutput(version);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async create(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const [totalEntries, document] = await Promise.all([\n strapi.db.query(model).count(),\n createDocument(ctx),\n ]);\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(document);\n ctx.status = 201;\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument, {\n // Empty metadata as it's not relevant for a new document\n availableLocales: false,\n availableStatus: false,\n });\n\n if (totalEntries === 0) {\n strapi.telemetry.send('didCreateFirstContentTypeEntry', {\n eventProperties: { model },\n });\n }\n },\n\n async update(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n const updatedVersion = await updateDocument(ctx);\n\n const sanitizedVersion = await permissionChecker.sanitizeOutput(updatedVersion);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedVersion);\n },\n\n async clone(ctx: any) {\n const { userAbility, user } = ctx.state;\n const { model, sourceId: id } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.create()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.create(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n const document = await documentManager.findOne(id, model, {\n populate,\n locale,\n status: 'draft',\n });\n\n if (!document) {\n return ctx.notFound();\n }\n\n const pickPermittedFields = permissionChecker.sanitizeCreateInput;\n const setCreator = setCreatorFields({ user });\n const excludeNotCreatable = excludeNotCreatableFields(model, permissionChecker);\n const sanitizeFn = async.pipe(pickPermittedFields, setCreator as any, excludeNotCreatable);\n const sanitizedBody = await sanitizeFn(body);\n\n const clonedDocument = await documentManager.clone(document.documentId, sanitizedBody, model);\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(clonedDocument);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument, {\n // Empty metadata as it's not relevant for a new document\n availableLocales: false,\n availableStatus: false,\n });\n },\n\n async autoClone(ctx: any) {\n const { model } = ctx.params;\n\n // Check if the model has fields that prevent auto cloning\n const prohibitedFields = getProhibitedCloningFields(model);\n\n if (prohibitedFields.length > 0) {\n return ctx.badRequest(\n 'Entity could not be cloned as it has unique and/or relational fields. ' +\n 'Please edit those fields manually and save to complete the cloning.',\n {\n prohibitedFields,\n }\n );\n }\n\n await this.clone(ctx);\n },\n\n async delete(ctx: any) {\n const { userAbility } = ctx.state;\n const { id, model } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.delete()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.delete(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(ctx.query, model);\n\n // Find locales to delete\n const documentLocales = await documentManager.findLocales(id, model, { populate, locale });\n\n if (documentLocales.length === 0) {\n return ctx.notFound();\n }\n\n for (const document of documentLocales) {\n if (permissionChecker.cannot.delete(document)) {\n return ctx.forbidden();\n }\n }\n\n const result = await documentManager.delete(id, model, { locale });\n\n ctx.body = await permissionChecker.sanitizeOutput(result);\n },\n\n /**\n * Publish a document version.\n * Supports creating/saving a document and publishing it in one request.\n */\n async publish(ctx: any) {\n const { userAbility } = ctx.state;\n // If id does not exist, the document has to be created\n const { id, model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.publish()) {\n return ctx.forbidden();\n }\n\n const publishedDocument = await strapi.db.transaction(async () => {\n // Create or update document\n const permissionQuery = await permissionChecker.sanitizedQuery.publish(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n\n let document: any;\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n /**\n * Publish can be called on two scenarios:\n * 1. Create a new document and publish it in one request\n * 2. Update an existing document and publish it in one request\n *\n * Based on user permissions:\n * 1. User cannot create a document, but can publish\n * Action will be forbidden as user cannot create a document\n * 2. User can update and publish a document\n * Action will be allowed, but document will not be updated, only published with the latest draft\n */\n const isCreate = isNil(id);\n if (isCreate) {\n if (permissionChecker.cannot.create()) {\n throw new errors.ForbiddenError();\n }\n\n document = await createDocument(ctx, { populate });\n }\n\n const isUpdate = !isCreate;\n if (isUpdate) {\n // check if the document exists\n const documentExists = await documentManager.exists(model, id);\n\n if (!documentExists) {\n throw new errors.NotFoundError('Document not found');\n }\n\n // check the document version\n document = await documentManager.findOne(id!, model, { populate, locale });\n\n if (!document) {\n // update and publish the new version\n if (\n permissionChecker.cannot.create({ locale }) ||\n permissionChecker.cannot.publish({ locale })\n ) {\n throw new errors.ForbiddenError();\n }\n document = await updateDocument(ctx);\n } else if (permissionChecker.can.update(document)) {\n await updateDocument(ctx);\n }\n }\n\n if (permissionChecker.cannot.publish(document)) {\n throw new errors.ForbiddenError();\n }\n\n const publishResult = await documentManager.publish(document.documentId, model, {\n locale,\n // TODO: Allow setting creator fields on publish\n // data: setCreatorFields({ user, isEdition: true })({}),\n });\n\n if (!publishResult || publishResult.length === 0) {\n throw new errors.NotFoundError('Document not found or already published.');\n }\n\n return publishResult[0];\n });\n\n const sanitizedDocument = await permissionChecker.sanitizeOutput(publishedDocument);\n ctx.body = await formatDocumentWithMetadata(permissionChecker, model, sanitizedDocument);\n },\n\n async bulkPublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body } = ctx.request;\n const { documentIds } = body;\n\n await validateBulkActionInput(body);\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.publish()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.publish(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .populateDeep(Infinity)\n .countRelations()\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model, {\n allowMultipleLocales: true,\n });\n\n const entityPromises = documentIds.map((documentId: any) =>\n documentManager.findLocales(documentId, model, { populate, locale, isPublished: false })\n );\n const entities = (await Promise.all(entityPromises)).flat();\n\n for (const entity of entities) {\n if (!entity) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.publish(entity)) {\n return ctx.forbidden();\n }\n }\n\n const count = await documentManager.publishMany(model, documentIds, locale);\n ctx.body = { count };\n },\n\n async bulkUnpublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { body } = ctx.request;\n const { documentIds } = body;\n\n await validateBulkActionInput(body);\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.unpublish()) {\n return ctx.forbidden();\n }\n\n const { locale } = await getDocumentLocaleAndStatus(body, model, {\n allowMultipleLocales: true,\n });\n\n const entityPromises = documentIds.map((documentId: any) =>\n documentManager.findLocales(documentId, model, { locale, isPublished: true })\n );\n const entities = (await Promise.all(entityPromises)).flat();\n\n for (const entity of entities) {\n if (!entity) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.publish(entity)) {\n return ctx.forbidden();\n }\n }\n\n const entitiesIds = entities.map((document) => document.documentId);\n\n const { count } = await documentManager.unpublishMany(entitiesIds, model, { locale });\n\n ctx.body = { count };\n },\n\n async unpublish(ctx: any) {\n const { userAbility } = ctx.state;\n const { id, model } = ctx.params;\n const {\n body: { discardDraft, ...body },\n } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.unpublish()) {\n return ctx.forbidden();\n }\n\n if (discardDraft && permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.unpublish(ctx.query);\n\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n // TODO allow multiple locales for bulk locale unpublish\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n const document = await documentManager.findOne(id, model, {\n populate,\n locale,\n status: 'published',\n });\n\n if (!document) {\n throw new errors.NotFoundError();\n }\n\n if (permissionChecker.cannot.unpublish(document)) {\n throw new errors.ForbiddenError();\n }\n\n if (discardDraft && permissionChecker.cannot.discard(document)) {\n throw new errors.ForbiddenError();\n }\n\n await strapi.db.transaction(async () => {\n if (discardDraft) {\n await documentManager.discardDraft(document.documentId, model, { locale });\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.unpublish(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n });\n },\n\n async discard(ctx: any) {\n const { userAbility } = ctx.state;\n const { id, model } = ctx.params;\n const { body } = ctx.request;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.discard()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.discard(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n const document = await documentManager.findOne(id, model, {\n populate,\n locale,\n status: 'published',\n });\n\n // Can not discard a document that is not published\n if (!document) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.discard(document)) {\n return ctx.forbidden();\n }\n\n ctx.body = await async.pipe(\n (document) => documentManager.discardDraft(document.documentId, model, { locale }),\n permissionChecker.sanitizeOutput,\n (document) => formatDocumentWithMetadata(permissionChecker, model, document)\n )(document);\n },\n\n async bulkDelete(ctx: any) {\n const { userAbility } = ctx.state;\n const { model } = ctx.params;\n const { query, body } = ctx.request;\n const { documentIds } = body;\n\n await validateBulkActionInput(body);\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.delete()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.delete(query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale } = await getDocumentLocaleAndStatus(body, model);\n\n const documentLocales = await documentManager.findLocales(documentIds, model, {\n populate,\n locale,\n });\n\n if (documentLocales.length === 0) {\n return ctx.notFound();\n }\n\n for (const document of documentLocales) {\n if (permissionChecker.cannot.delete(document)) {\n return ctx.forbidden();\n }\n }\n\n // We filter out documentsIds that maybe doesn't exist in a specific locale\n const localeDocumentsIds = documentLocales.map((document) => document.documentId);\n\n const { count } = await documentManager.deleteMany(localeDocumentsIds, model, { locale });\n\n ctx.body = { count };\n },\n\n async countDraftRelations(ctx: any) {\n const { userAbility } = ctx.state;\n const { model, id } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const permissionQuery = await permissionChecker.sanitizedQuery.read(ctx.query);\n const populate = await getService('populate-builder')(model)\n .populateFromQuery(permissionQuery)\n .build();\n\n const { locale, status } = await getDocumentLocaleAndStatus(ctx.query, model);\n const entity = await documentManager.findOne(id, model, { populate, locale, status });\n\n if (!entity) {\n return ctx.notFound();\n }\n\n if (permissionChecker.cannot.read(entity)) {\n return ctx.forbidden();\n }\n\n const number = await documentManager.countDraftRelations(id, model, locale);\n\n return {\n data: number,\n };\n },\n\n async countManyEntriesDraftRelations(ctx: any) {\n const { userAbility } = ctx.state;\n const ids = ctx.request.query.documentIds as string[];\n const locale = ctx.request.query.locale as string[];\n const { model } = ctx.params;\n\n const documentManager = getService('document-manager');\n const permissionChecker = getService('permission-checker').create({ userAbility, model });\n\n if (permissionChecker.cannot.read()) {\n return ctx.forbidden();\n }\n\n const documents = await documentManager.findMany(\n {\n filters: {\n documentId: ids,\n },\n locale,\n },\n model\n );\n\n if (!documents) {\n return ctx.notFound();\n }\n\n const number = await documentManager.countManyEntriesDraftRelations(ids, model, locale);\n\n return {\n data: number,\n };\n },\n};\n"],"names":["createDocument","ctx","opts","userAbility","user","state","model","params","body","request","documentManager","getService","permissionChecker","create","cannot","errors","ForbiddenError","pickPermittedFields","sanitizeCreateInput","setCreator","setCreatorFields","sanitizeFn","async","pipe","sanitizedBody","locale","status","getDocumentLocaleAndStatus","data","populate","updateDocument","id","update","permissionQuery","sanitizedQuery","query","populateFromQuery","build","documentVersion","documentExists","Promise","all","findOne","exists","NotFoundError","sanitizeUpdateInput","isEdition","documentId","find","documentMetadata","read","forbidden","populateDeep","countRelations","toOne","toMany","results","documents","pagination","findPage","documentsAvailableStatus","getManyAvailableStatus","setStatus","document","availableStatuses","filter","d","getStatus","map","sanitizeOutput","Infinity","version","notFound","meta","formatDocumentWithMetadata","publishedAt","availableLocales","availableStatus","sanitizedDocument","totalEntries","strapi","db","count","telemetry","send","eventProperties","updatedVersion","sanitizedVersion","clone","sourceId","excludeNotCreatable","excludeNotCreatableFields","clonedDocument","autoClone","prohibitedFields","getProhibitedCloningFields","length","badRequest","delete","documentLocales","findLocales","result","publish","publishedDocument","transaction","isCreate","isNil","isUpdate","can","publishResult","bulkPublish","documentIds","validateBulkActionInput","allowMultipleLocales","entityPromises","isPublished","entities","flat","entity","publishMany","bulkUnpublish","unpublish","entitiesIds","unpublishMany","discardDraft","discard","bulkDelete","localeDocumentsIds","deleteMany","countDraftRelations","number","countManyEntriesDraftRelations","ids","findMany","filters"],"mappings":"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"}