Created
September 4, 2021 17:17
-
-
Save Bon2xl/44c3e7b0a435dad35cfb5bceb7bbe491 to your computer and use it in GitHub Desktop.
Joi validation and middleware
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From: https://gist.github.com/stongo/6359042 | |
Commented By: geraldanosike commented on Jul 24 | |
// ******************************** | |
// User Model | |
// ******************************** | |
const mongoose = require('mongoose') | |
const Joi = require('joi') | |
const userSchema = new mongoose.Schema({ | |
email: { | |
type: String, | |
required: [true, 'Please enter a email'], | |
unique: true, | |
lowercase: true, | |
}, | |
password: { | |
type: String, | |
required: [true, 'Please enter a password'], | |
minlength: 8, | |
}, | |
}) | |
const User = mongoose.model('user', userSchema) | |
const validateUser = (user) => { | |
const schema = Joi.object({ | |
email: Joi.string().email().min(5).max(500).required(), | |
password: Joi.string().min(8).max(1024).required(), | |
}) | |
return schema.validate(user) | |
} | |
module.exports = { | |
User, | |
validateUser, | |
} | |
// ******************************** | |
// Validate Middleware | |
// ******************************** | |
module.exports = (validator) => { | |
return (req, res, next) => { | |
const { error } = validator(req.body) | |
console.log('error: ', error) | |
if (error) { | |
return res.status(400).send(error.details[0].message) | |
} | |
next() | |
} | |
} | |
// ******************************** | |
// Auth Route | |
// ******************************** | |
const { validateUser } = require('../models/User') | |
const validateMiddleWare = require('../middleware/validate') | |
const authController = require('../controllers/authController') | |
router.post('/signup', [validateMiddleWare(validateUser)], authController.signup_post) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment