source: backend/routes/userRoutes.js@ 55ed171

Last change on this file since 55ed171 was ee05663, checked in by Nace Gjorgjievski <nace.gorgievski123@…>, 22 months ago

Added Profile Updating

  • Property mode set to 100644
File size: 2.0 KB
Line 
1import express from "express";
2import expressAsyncHandler from "express-async-handler";
3import User from "../models/userModel.js";
4import bcrypt from "bcryptjs";
5import { generateToken, isAuth } from "../utils.js";
6
7const userRouter = express.Router();
8
9userRouter.post(
10 "/signin",
11 expressAsyncHandler(async (req, res) => {
12 const user = await User.findOne({ email: req.body.email });
13 if (user) {
14 if (bcrypt.compareSync(req.body.password, user.password)) {
15 res.send({
16 _id: user.id,
17 name: user.name,
18 contact: user.contact,
19 email: user.email,
20 isAdmin: user.isAdmin,
21 token: generateToken(user),
22 });
23 return;
24 }
25 }
26 res.status(401).send({ message: "Invalid email or password" });
27 })
28);
29
30userRouter.post(
31 "/signup",
32 expressAsyncHandler(async (req, res) => {
33 const newUser = new User({
34 name: req.body.name,
35 contact: req.body.contact,
36 email: req.body.email,
37 password: bcrypt.hashSync(req.body.password),
38 });
39 const user = await newUser.save();
40 res.send({
41 _id: user.id,
42 name: user.name,
43 contact: user.contact,
44 email: user.email,
45 isAdmin: user.isAdmin,
46 token: generateToken(user),
47 });
48 })
49);
50
51userRouter.put(
52 "/profile",
53 isAuth,
54 expressAsyncHandler(async (req, res) => {
55 const user = await User.findById(req.user._id);
56 if (user) {
57 user.name = req.body.name || user.name;
58 user.contact = req.body.contact || user.contact;
59 user.email = req.body.email || user.email;
60 if (req.body.password) {
61 user.password = bcrypt.hashSync(req.body.password, 8);
62 }
63
64 const updatedUser = await user.save();
65 res.send({
66 _id: updatedUser._id,
67 name: updatedUser.name,
68 contact: updatedUser.contact,
69 email: updatedUser.email,
70 isAdmin: updatedUser.isAdmin,
71 token: generateToken(updatedUser),
72 });
73 } else {
74 res.status(404).send({ message: "User Not Found" });
75 }
76 })
77);
78
79export default userRouter;
Note: See TracBrowser for help on using the repository browser.