node-mongo-demo

node.js and mongodb demo

git clone https://9o.is/git/node-mongo-demo.git

user-login.js

(938B)


      1 import bcrypt from "bcryptjs";
      2 import jwt from "jsonwebtoken";
      3 import User from "../models/user.js";
      4 
      5 const login = async (req, res) => {
      6   const { email, password } = req.body;
      7 
      8   try {
      9     const existingUser = await User.findOne({ email });
     10 
     11     if (!existingUser) {
     12       return res.status(404).json({ message: "User Does Not Exist" });
     13     }
     14 
     15     const isPasswordCorrect = await bcrypt.compare(
     16       password,
     17       existingUser.password
     18     );
     19 
     20     if (!isPasswordCorrect) {
     21       return res.status(400).json({ message: "Invalid Password" });
     22     }
     23 
     24     const token = jwt.sign(
     25       {
     26         _id: existingUser._id,
     27         name: existingUser.name,
     28         email: existingUser.email,
     29         password: existingUser.password,
     30       },
     31       "test",
     32       { expiresIn: "1h" }
     33     );
     34 
     35     res.status(200).json({ token });
     36   } catch (error) {
     37     res.status(500).json({ message: "Something went wrong" });
     38   }
     39 };
     40 
     41 export default login;