UNPKG

@pothos/plugin-scope-auth

Version:

A Pothos plugin for adding scope based authorization checks to your GraphQL Schema

102 lines (101 loc) 3.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: Object.getOwnPropertyDescriptor(all, name).get }); } _export(exports, { get createFieldAuthScopesStep () { return createFieldAuthScopesStep; }, get createFieldGrantScopesStep () { return createFieldGrantScopesStep; }, get createResolveStep () { return createResolveStep; }, get createTypeAuthScopesStep () { return createTypeAuthScopesStep; }, get createTypeGrantScopesStep () { return createTypeGrantScopesStep; } }); const _core = require("@pothos/core"); function createTypeAuthScopesStep(authScopes, type) { if (typeof authScopes === 'function') { return { run: (state, parent, _args, _context, info)=>state.evaluateTypeScopeFunction(authScopes, type, parent, info), errorMessage: `Not authorized to read fields for ${type}` }; } return { run: (state, _parent, _args, _context, info)=>state.evaluateScopeMap(authScopes, info), errorMessage: `Not authorized to read fields for ${type}` }; } function createTypeGrantScopesStep(grantScopes, type, forField) { return { run: (state, parent, _args, context, info)=>state.grantTypeScopes(type, parent, forField ? info.path.prev : info.path, ()=>grantScopes(parent, context)), errorMessage: `Unknown error creating grants for ${type}` }; } function createFieldAuthScopesStep(authScopes) { if (typeof authScopes === 'function') { return { errorMessage: (_parent, _args, _context, info)=>`Not authorized to resolve ${info.parentType}.${info.fieldName}`, run: (state, parent, args, context, info)=>{ const scopeMap = authScopes(parent, args, context, info); if ((0, _core.isThenable)(scopeMap)) { return scopeMap.then((resolved)=>state.evaluateScopeMap(resolved, info)); } return state.evaluateScopeMap(scopeMap, info); } }; } return { errorMessage: (_parent, _args, _context, info)=>`Not authorized to resolve ${info.parentType}.${info.fieldName}`, run: (state, _parent, _args, _context, info)=>state.evaluateScopeMap(authScopes, info) }; } function createFieldGrantScopesStep(grantScopes) { return { errorMessage: (_parent, _args, _context, info)=>`Unknown issue generating grants for ${info.parentType}.${info.fieldName}`, run: (state, parent, args, context, info)=>{ if (typeof grantScopes !== 'function') { state.saveGrantedScopes(grantScopes, info.path); return null; } const result = grantScopes(parent, args, context, info); if ((0, _core.isThenable)(result)) { return result.then((resolved)=>{ state.saveGrantedScopes(resolved, info.path); return null; }); } state.saveGrantedScopes(result, info.path); return null; } }; } function createResolveStep(resolver) { return { errorMessage: (_parent, _args, _context, info)=>`Unknown issue resolving ${info.parentType}.${info.fieldName}`, run: (_state, parent, args, context, info, setResolved)=>{ const result = resolver(parent, args, context, info); if ((0, _core.isThenable)(result)) { return Promise.resolve(result).then((resolved)=>{ setResolved(resolved); return null; }); } setResolved(result); return null; } }; } //# sourceMappingURL=steps.js.map