Javascript password never match in the login system using bcryptjs

33 views Asked by At

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

0

There are 0 answers