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;