I'm trying to create a login system in javascript, but the password my user use in the login system never match the one saved in the storage.
This is my controller file:
exports.getUserSignUpPage = (req, res) => {
res.render("user/userSignUp", { showNavbar: false, showSidebar: false });
};
exports.postSaveUser = async (req, res) => {
try {
const { idCode, email, password } = req.body; // Include idCode in the destructuring assignment
// Hash the password
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(password, salt);
// Create a new user
const newUser = new User({
id: idCode, // Use idCode as the user ID
email,
password: hashedPassword
});
console.log(hashedPassword)
// Save the user to the database
await newUser.save();
res.status(201).json({ message: 'User registered successfully' });
} catch (error) {
console.error(error);
res.status(500).json({ message: 'Internal Server Error' });
}
};
exports.getUserSignInPage = (req, res) => {
res.render("user/userSignIn", { showNavbar: false, showSidebar: false });
};
// Add this new method in your user controller file
exports.loginUser = passport.authenticate('local', {
successRedirect: '/user/profile',
failureRedirect: '/user/sign-in',
failureFlash: true
});
this is my app.js file:
passport.use(
new LocalStrategy(
{
usernameField: 'email',
passwordField: 'password',
},
async (email, password, done) => {
try {
const User = require('./models/User');
const user = await User.findOne({ email });
if (!user) {
return done(null, false, { message: 'Incorrect email.' });
}
const isMatch = await bcrypt.compare(password.trim().toString(), user.password.toString());
if (isMatch) {
return done(null, user);
} else {
console.log('Entered password:', password);
console.log('Stored hashed password:', user.password);
return done(null, false, { message: 'Incorrect password.' });
}
} catch (error) {
return done(error);
}
}
)
);
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
const User = require('./models/User');
User.findById(id, (err, user) => {
done(err, user);
});
});
I don't know what I'm doing wrong but my password never match
this is what i have with console log at the momento of registrations: $2a$10$OZaTMWnFK8klCg7R4CRrhOaTXgTAzqcUTjWr5Cq.An2wkFSSK2vzO and this when login Entered password: ventidue Stored hashed password: $2a$10$NPEpiVbgDvvBBwc6XvAO0.kTv8Q1BA0oXkyw2abmjIQvYFtfctyoy