enables policy route and policy graphql query
This commit is contained in:
@@ -4,6 +4,7 @@ const graphQLHTTP = require('express-graphql');
|
||||
const buildObjectType = require('./schema/buildObjectType');
|
||||
const buildMutationInputType = require('./schema/buildMutationInputType');
|
||||
const buildBlockType = require('./schema/buildBlockType');
|
||||
const buildPoliciesType = require('./schema/buildPoliciesType');
|
||||
const buildLocaleInputType = require('./schema/buildLocaleInputType');
|
||||
const buildFallbackLocaleInputType = require('./schema/buildFallbackLocaleInputType');
|
||||
const registerCollections = require('../collections/graphql/register');
|
||||
@@ -30,6 +31,7 @@ class GraphQL {
|
||||
this.buildMutationInputType = buildMutationInputType.bind(this);
|
||||
this.buildWhereInputType = buildWhereInputType;
|
||||
this.buildObjectType = buildObjectType.bind(this);
|
||||
this.buildPoliciesType = buildPoliciesType.bind(this);
|
||||
this.registerCollections = registerCollections.bind(this);
|
||||
this.initUser = initUser.bind(this);
|
||||
this.registerGlobals = registerGlobals.bind(this);
|
||||
|
||||
48
src/graphql/schema/buildPoliciesType.js
Normal file
48
src/graphql/schema/buildPoliciesType.js
Normal file
@@ -0,0 +1,48 @@
|
||||
const { GraphQLJSONObject } = require('graphql-type-json');
|
||||
const { GraphQLBoolean, GraphQLNonNull, GraphQLObjectType } = require('graphql');
|
||||
const formatName = require('../utilities/formatName');
|
||||
|
||||
const buildCollectionFields = (collection) => {
|
||||
const fields = {};
|
||||
const operations = ['create', 'read', 'update', 'delete'];
|
||||
|
||||
operations.forEach((operation) => {
|
||||
const capitalizedOperation = operation.charAt(0).toUpperCase() + operation.slice(1);
|
||||
|
||||
fields[operation] = {
|
||||
type: new GraphQLObjectType({
|
||||
name: formatName(`${collection.labels.singular}${capitalizedOperation}Policy`),
|
||||
fields: {
|
||||
permission: { type: new GraphQLNonNull(GraphQLBoolean) },
|
||||
where: { type: GraphQLJSONObject },
|
||||
},
|
||||
}),
|
||||
};
|
||||
});
|
||||
|
||||
return fields;
|
||||
};
|
||||
|
||||
function buildPoliciesType() {
|
||||
const fields = {
|
||||
canAccessAdmin: {
|
||||
type: new GraphQLNonNull(GraphQLBoolean),
|
||||
},
|
||||
};
|
||||
|
||||
Object.values(this.config.collections).forEach((collection) => {
|
||||
fields[collection.slug] = {
|
||||
type: new GraphQLObjectType({
|
||||
name: formatName(`${collection.labels.singular}Policy`),
|
||||
fields: buildCollectionFields(collection),
|
||||
}),
|
||||
};
|
||||
});
|
||||
|
||||
return new GraphQLObjectType({
|
||||
name: 'Policies',
|
||||
fields,
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = buildPoliciesType;
|
||||
Reference in New Issue
Block a user