i'm already set validate in User Model. My Route Code is like this where I'm trying for validate.
var express = require('express');
var loginRouter = express.Router();
var passport = require('passport');
var User = require('../app/models/model')().User;
module.exports = function() {
var loginController = require('../controller/loginController')();
loginRouter.get('/login',loginController.getLogin);
loginRouter.post('/login',
function (req, res, next) {
User.validate().success(function () {
next(); // only call next if validation passes
}).error(function (error) {
console.log(error);
res.redirect('/auth/login');
// or res.send({error: true}) or res.redner( ... )
})
},
passport.authenticate('local-login',{
successRedirect: '/dashboard',
failureRedirect: '/auth/login',
failureFlash : true
}
));
return loginRouter;
User.js
var Sequelize = require('sequelize');
var attributes = {
username:
{
type: Sequelize.STRING,
field: 'username',
validate: {
notNull: true,
}
},
password:
{
type: Sequelize.STRING,
field: 'password',
validate: {
notNull: true,
}
}
}
var options = {
freezeTableName: true,
timestamps: false
}
module.exports.attributes = attributes;
module.exports.options = options;
model.js
var Sequelize = require('sequelize')
config = require('../../config/config').database;
module.exports = function(){
var sequelize = new Sequelize(config.database,config.username,config.password,config.options);
var UserMeta = require('./User');
var User = sequelize.define('users',UserMeta.attributes,UserMeta.options);
return {
User: User
}
};
so i don't know what i'm doing wrong here or which thing i forgot. so any idea about it?
That's almost good, the only thing you should know is when you call next(), express will pass the request to the next handler, which is passportjs authentication function.
You can do as you wish with req and res. If the request does not pass the validation criteria, you can send errors or render a another page, like a normal response. But do not call next() in those cases.
Depending on your implementation, your code might look like this:
loginRouter.post('/login',
function (req, res, next) {
//here to get validation error
User.validate().success(function () {
next(); // only call next if validation passes
}).error(function () {
res.redirect('/auth/login');
// or res.send({error: true}) or res.redner( ... )
})
},
passport.authenticate('local-login',{
successRedirect: '/dashboard',
failureRedirect: '/auth/login',
failureFlash : true
}
));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With