UNPKG

@graphql-mesh/plugin-operation-field-permissions

Version:
28 lines (24 loc) 1.04 kB
'use strict'; 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;