@graphql-mesh/plugin-operation-field-permissions
Version:
28 lines (24 loc) • 1.04 kB
JavaScript
const crossHelpers = require('@graphql-mesh/cross-helpers');
const operationFieldPermissions = require('@envelop/operation-field-permissions');
function useMeshOperationFieldPermissions(options) {
return {
onPluginInit({ addPlugin }) {
addPlugin(operationFieldPermissions.useOperationFieldPermissions({
getPermissions(context) {
const allowedFields = new Set();
for (const { if: condition, allow } of options.permissions) {
const ifFn = new Function('context', 'env', 'return ' + condition);
if (ifFn(context, crossHelpers.process.env)) {
for (const allowedField of allow) {
allowedFields.add(allowedField);
}
}
}
return allowedFields;
},
}));
},
};
}
module.exports = useMeshOperationFieldPermissions;
;