overleaf/services/web/app/src/infrastructure/Validation.js
Alf Eaton 1be43911b4 Merge pull request #3942 from overleaf/prettier-trailing-comma
Set Prettier's "trailingComma" setting to "es5"

GitOrigin-RevId: 9f14150511929a855b27467ad17be6ab262fe5d5
2021-04-28 02:10:01 +00:00

32 lines
718 B
JavaScript

const { Joi: CelebrateJoi, celebrate, errors } = require('celebrate')
const { ObjectId } = require('mongodb')
const objectIdValidator = {
name: 'objectId',
language: {
invalid: 'needs to be a valid ObjectId',
},
pre(value, state, options) {
if (!ObjectId.isValid(value)) {
return this.createError('objectId.invalid', { value }, state, options)
}
if (options.convert) {
return new ObjectId(value)
}
return value
},
}
const Joi = CelebrateJoi.extend(objectIdValidator)
const errorMiddleware = errors()
module.exports = { Joi, validate, errorMiddleware }
/**
* Validation middleware
*/
function validate(schema) {
return celebrate(schema, { allowUnknown: true })
}