Опция проверки электронной почты hapijs joi Использование tldWhitelist

Я пытаюсь использовать Joi и Hapijs для проверки запросов на отправку POST.

Вот мой код чванства:

  server.route([
    {
      method: "POST",
      path: '/cardsignup',
      config: {
        handler: card_signup,
        description: 'Insert card signup record',
        notes: 'save card signup to database',
        tags: ['card', 'signup', 'api'],
        plugins: {
          'hapi-swagger': {
            responseMessages: [
              {code: 200, message: 'Success'},
              {code: 400, message: 'Bad Request'},
              {code: 401, message: 'Not Authorized'},
              {code: 500, message: 'Internal Server Error'}
            ]
          }
        },
        validate: {
          payload: {
            name: Joi.string()
              .required()
              .description('full name'),
            email: Joi.string().email({
              tldWhitelist:['example.com']
            })
              .required()
              .description('email'),
            signature_svg: Joi.string()
              .optional()
              .description('string encoded svg'),
            signature_png: Joi.binary()
              .optional()
              .description('base64 encoded png'),
            card_choice: Joi.string()
              .required()
              .description('card choice string'),
            last4: Joi.number()
              .required()
              .description('last 4 digits of cc')
          }
        }
      }
    }
  ]);

Когда я делаю POST на сервер, я получаю это обратно, независимо от того, какое электронное письмо я ввожу:

{
  "statusCode": 400,
  "error": "Bad Request",
  "message": "child \"email\" fails because [\"email\" must be a valid email]",
  "validation": {
    "source": "payload",
    "keys": [
      "email"
    ]
  }
}

У кого-нибудь есть пример использования tldWhitelist?

В частности, я хочу убедиться, что электронные письма отправлены с сайта example.com.


person Jon    schedule 03.11.2015    source источник


Ответы (1)


Значением tldWhitelist может быть либо таблица поиска объектов, либо массив допустимых верхних домены уровня. Например:

tldWhitelist: ['com']
person Gergo Erdosi    schedule 03.11.2015
comment
Спасибо. Как убедиться, что отправленные электронные письма отправлены с сайта example.com? - person Jon; 05.11.2015
comment
Вы можете использовать регулярное выражение: Joi.string().email().regex(/example\.com$/). - person Gergo Erdosi; 05.11.2015