Реплицируйте запрос самоанализа graphQL с помощью обычного запроса GraphQL, чтобы избежать угрозы безопасности (при использовании graphql-compose-mongoose) - PullRequest
0 голосов
/ 28 января 2019

Попытка получить обратно список IdTypes из запроса graphQL.В настоящее время используем интроспекцию для получения списка, однако после аудита безопасности нам посоветовали отключить интроспекцию.

Это то, что у меня сейчас есть, и, очевидно, оно не работает: (

import mongoose from 'mongoose'
import { GQC } from 'graphql-compose';
import { composeWithMongoose } from 'graphql-compose-mongoose';

export const IdTypeSchema = new mongoose.Schema({
  idType: {
    type: String,
    enum: ['ID', 'Passport', 'None']
  }
})

const IdType = mongoose.model('IdType', IdTypeSchema)

export const IdTypeTC = composeWithMongoose(IdType, {})

GQC.rootQuery().addFields({
  idTypesMany: IdTypeTC.getResolver('findMany')
})

Перечисления вряд ли будут часто меняться.

1 Ответ

0 голосов
/ 29 января 2019

Я не решил, но вот что сработало: D Не нужно было привлекать мангуста вообще ...

import { GQC, Resolver } from 'graphql-compose'
import { validateSession } from '../authentication'
import { ID_TYPES } from './constants'

export function _idTypeResolveHandler () {
  return ID_TYPES
}

const idTypeResolver = new Resolver({
  name: 'getIdTypes',
  type: ['String'],
  resolve: _idTypeResolveHandler
})

GQC.rootQuery().addFields({
  idTypes: idTypeResolver
    .wrapResolve(next => resolveParams => {
      const { user } = resolveParams.context.state
      return next(resolveParams)
    })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...