System Information
- Strapi Version: 4.14.5
- Operating System: Mac
- Database: SQLite
- Node Version: 18.14.0
- NPM Version: 9.3.1
- Yarn Version: 1.22.19
I want to disable all built-in content-types for the graphql plugin so that only my own content-type schema is being used.
The following command lists all available content-types for my strapi backend:
> yarn strapi content-types:list
yarn run v1.22.19
$ strapi content-types:list
┌──────────────────────────────────────┐
│ Name │
├──────────────────────────────────────┤
│ admin::permission │
├──────────────────────────────────────┤
│ admin::user │
├──────────────────────────────────────┤
│ admin::role │
├──────────────────────────────────────┤
│ admin::api-token │
├──────────────────────────────────────┤
│ admin::api-token-permission │
├──────────────────────────────────────┤
│ admin::transfer-token │
├──────────────────────────────────────┤
│ admin::transfer-token-permission │
├──────────────────────────────────────┤
│ api::announcement.announcement │
├──────────────────────────────────────┤
│ plugin::upload.file │
├──────────────────────────────────────┤
│ plugin::upload.folder │
├──────────────────────────────────────┤
│ plugin::i18n.locale │
├──────────────────────────────────────┤
│ plugin::users-permissions.permission │
├──────────────────────────────────────┤
│ plugin::users-permissions.role │
├──────────────────────────────────────┤
│ plugin::users-permissions.user │
└──────────────────────────────────────┘
✨ Done in 2.92s.
I would like to disable all admin::*
and plugin::*
content-types and just leave api::*
by following the docs to disable operations in the shadow crud.
register({ strapi }: { strapi: Strapi }) {
const graphqlExt = strapi.plugin('graphql').service('extension')
graphqlExt.shadowCRUD('admin::permission').disable()
graphqlExt.shadowCRUD('admin::role').disable()
graphqlExt.shadowCRUD('admin::user').disable()
graphqlExt.shadowCRUD('admin::api-token').disable()
graphqlExt.shadowCRUD('admin::api-token-permission').disable()
graphqlExt.shadowCRUD('admin::transfer-token').disable()
graphqlExt.shadowCRUD('plugin::upload.file').disable()
graphqlExt.shadowCRUD('plugin::upload.folder').disable()
graphqlExt.shadowCRUD('plugin::i18n.locale').disable()
graphqlExt.shadowCRUD('plugin::users-permissions.permission').disable()
graphqlExt.shadowCRUD('plugin::users-permissions.role').disable()
graphqlExt.shadowCRUD('plugin::users-permissions.user').disable()
},
Running this code yields the following nexus error when the server starts. Some content-types can be fully disabled, but some only allow calls to disableQueries()
or disableMutations()
to prevent the nexus error.
The server is restarting
Error: NEXUS__UNKNOWN__TYPE was already defined and imported as a type, check the docs for extending types
at extendError (/Development/node/cms-strapi/node_modules/nexus/dist/builder.js:1123:12)
at SchemaBuilder.addType (/Development/node/cms-strapi/node_modules/nexus/dist/builder.js:156:27)
at SchemaBuilder.missingType (/Development/node/cms-strapi/node_modules/nexus/dist/builder.js:704:14)
at SchemaBuilder.getOrBuildType (/Development/node/cms-strapi/node_modules/nexus/dist/builder.js:938:21)
at SchemaBuilder.getOutputType (/Development/node/cms-strapi/node_modules/nexus/dist/builder.js:876:34)
at SchemaBuilder.buildOutputField (/Development/node/cms-strapi/node_modules/nexus/dist/builder.js:798:60)
at /Development/node/cms-strapi/node_modules/nexus/dist/builder.js:770:43
at Array.forEach (<anonymous>)
at SchemaBuilder.buildOutputFields (/Development/node/cms-strapi/node_modules/nexus/dist/builder.js:769:16)
at fields (/Development/node/cms-strapi/node_modules/nexus/dist/builder.js:544:32)