Im developing a website using Cloud9, trying to create a login
using passport connecting to a MySQL database but when testing in
postman i get the error shown in the print
The error occurs in this line of code: res.status(jsonMessages.users.signinSuccess.status).send(req.users);
I cant apply the method signinSuccess to the users because it is undefined
Any help would be appreciated
//PASSPORT
//load bcrypt
var bCrypt = require('bcrypt-nodejs');
//var passport = require("passport");
module.exports = function(passport,users){
let User = users;
let LocalStrategy = require('passport-local').Strategy;
passport.serializeUser(function(users, done) {
done(null, users.id);
});
passport.deserializeUser(function(id, done) {
User.findByPk(id).then(function(users) {
if(users){
done(null, users.get());
}
else{
done(users.errors,null);
}
});
});
passport.use('local-signup', new LocalStrategy(
{
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true // allows us to pass back the entire request to the callback
},
function(req, email, password, done){
const user_typeField = req.body.user_type;
const addressField = req.body.address;
const Citizen_id_citizenField = req.body.Citizen_id_citizen;
const phoneField = req.body.phone;
const photoField = req.body.photo;
const Speciality_id_specialityField = req.body.Speciality_id_speciality;
const User_team_id_user_teamField = req.body.User_team_id_user_team;
const nameField = req.body.name;
let generateHash = function(password) {
return bCrypt.hashSync(password, bCrypt.genSaltSync(8), null);
};
User.findOne({where: {email:email}}).then(function(user){
if(users)
{
return done(null, false, {message : 'That email is already taken'} );
}
else
{
let userPassword = generateHash(password);
let data =
{ email:email,
password:userPassword,
user_type:user_typeField,
address:addressField,
Citizen_id_citizen:Citizen_id_citizenField,
phone:phoneField,
photo:photoField,
Speciality_id_speciality:Speciality_id_specialityField,
User_team_id_user_team:User_team_id_user_teamField,
name:nameField
};
User.create(data).then(function(newUser,created){
if(!newUser){
return done(null,false);
}
if(newUser){
return done(null,newUser);
}
});
}
});
}
));
//LOCAL SIGNIN
passport.use('local-signin', new LocalStrategy(
{
// by default, local strategy uses username and password, we will override with email
usernameField : 'email',
passwordField : 'password',
passReqToCallback : true // allows us to pass back the entire request to the callback
},
function(req, email, password, done) {
let User = users;
let isValidPassword = function(userpass,password){
return bCrypt.compareSync(password, userpass);
}
User.findOne({ where : { email: email}}).then(function (users) {
if (!users) {
return done(null, false, { message: 'Email does not exist' });
}
if (!isValidPassword(users.password,password)) {
return done(null, false, { message: 'Incorrect password.' });
}
let userinfo = users.get();
return done(null,userinfo);
}).catch(function(err){
console.log("Error:",err);
return done(null, false, { message: 'Something went wrong with your Signin' });
});
}
));
}
//auth.controller.js
const jsonMessagesPath = __dirname + "/../assets/jsonMessages/";
const jsonMessages = require(jsonMessagesPath + "login");
var exports = module.exports = {};
exports.signup = function(req, res) {
res.status(jsonMessages.users.duplicate.status).send(jsonMessages.users.duplicate);
};
exports.signupSuccess = function(req, res) {
res.status(jsonMessages.users.signupSuccess.status).send(jsonMessages.users.signupSuccess);
};
exports.signin = function(req, res) {
res.status(jsonMessages.users.invalid.status).send(jsonMessages.users.invalid);
console.log(res.user);
};
exports.signinSuccess = function(req, res) {
console.log(req.user);
res.status(jsonMessages.users.signinSuccess.status).send(req.users);
};
exports.logout = function(req, res, err) {
req.session.destroy(function(err) {
if (err) {
console.log(err);
res.status(jsonMessages.user.logoutError.status).send(jsonMessages.user.logoutError);
}
res.status(jsonMessages.user.logoutSuccess.status).send(jsonMessages.user.logoutSuccess);
});
};
[The link below is the printscreen of the error ][1]
[1]: https://i.stack.imgur.com/hHtOU.png
question from:
https://stackoverflow.com/questions/65879644/typeerror-cannot-read-property-39signinsuccess39-of-undefined