45 lines
1.4 KiB
JavaScript

'use strict';
const getTypes = require('./types');
const getQueries = require('./queries');
const getMutations = require('./mutations');
const getResolversConfig = require('./resolvers-configs');
module.exports = ({ strapi }) => {
const { config: graphQLConfig } = strapi.plugin('graphql');
const extensionService = strapi.plugin('graphql').service('extension');
const isShadowCRUDEnabled = graphQLConfig('shadowCRUD', true);
if (!isShadowCRUDEnabled) {
return;
}
// Disable Permissions queries & mutations but allow the
// type to be used/selected in filters or nested resolvers
extensionService
.shadowCRUD('plugin::users-permissions.permission')
.disableQueries()
.disableMutations();
// Disable User & Role's Create/Update/Delete actions so they can be replaced
const actionsToDisable = ['create', 'update', 'delete'];
extensionService.shadowCRUD('plugin::users-permissions.user').disableActions(actionsToDisable);
extensionService.shadowCRUD('plugin::users-permissions.role').disableActions(actionsToDisable);
// Register new types & resolvers config
extensionService.use(({ nexus }) => {
const types = getTypes({ strapi, nexus });
const queries = getQueries({ strapi, nexus });
const mutations = getMutations({ strapi, nexus });
const resolversConfig = getResolversConfig({ strapi });
return {
types: [types, queries, mutations],
resolversConfig,
};
});
};