Skip to content

Commit 9a0a2f8

Browse files
product model creation
1 parent 206f92e commit 9a0a2f8

File tree

5 files changed

+85
-5
lines changed

5 files changed

+85
-5
lines changed

controller/productCtrl.js

Whitespace-only changes.

controller/userCtrl.js

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,37 @@ const handleRefreshToken = asyncHandler( async (req,res) => {
5353
const cookie = req.cookies;
5454
if(!cookie?.refreshToken) throw new Error("No refresh token in cookies.")
5555
const refreshToken = cookie.refreshToken;
56-
const user = await User.findOne({refreshToken});
56+
const user = await User.findOne({ refreshToken });
5757
if(!user) throw new Error("No refresh token present in database.")
58-
jwt.verify(refreshToken, process.env.JWT_SECRET, (err, decoded => {
58+
jwt.verify(refreshToken, process.env.JWT_SECRET, (err, decoded) => {
5959
if(err || user.id !== decoded.id) {
6060
throw new Error("There is something wrong with the refresh token.");
6161
}
6262
const accessToken = generateToken(user?._id);
6363
res.json({accessToken});
64-
}))
64+
})
65+
});
66+
67+
// logout
68+
const logout = asyncHandler( async (req,res)=>{
69+
const cookie = req.cookies;
70+
if(!cookie?.refreshToken) throw new Error("No refresh token in cookies.")
71+
const refreshToken = cookie.refreshToken;
72+
const user = await User.findOne({ refreshToken });
73+
74+
if(!user) {
75+
res.clearCookie("refreshToken", {
76+
httpOnly: true,
77+
secure: true,
78+
});
79+
return res.sendStatus(204); //forbidden
80+
}
81+
await User.findOneAndUpdate({refreshToken},{refreshToken:""});
82+
res.clearCookie("refreshToken", {
83+
httpOnly: true,
84+
secure: true,
85+
});
86+
return res.sendStatus(204); //forbidden
6587
});
6688

6789
// Get All Users
@@ -148,4 +170,5 @@ module.exports = {
148170
updateUser,
149171
blockUser,
150172
unblockUser,
151-
handleRefreshToken };
173+
handleRefreshToken,
174+
logout };

models/productModel.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
const mongoose = require('mongoose');
2+
3+
// Declare the Schema of the Mongo model
4+
var productSchema = new mongoose.Schema({
5+
title:{
6+
type:String,
7+
required:true,
8+
trim:true,
9+
},
10+
slug:{
11+
type:String,
12+
required:true,
13+
unique:true,
14+
lowercase: true,
15+
},
16+
description:{
17+
type:String,
18+
required:true,
19+
},
20+
price:{
21+
type:Number,
22+
required:true,
23+
},
24+
category: {
25+
type: mongoose.Schema.Types.ObjectId,
26+
ref: "Category",
27+
},
28+
quantity: {
29+
type: Number,
30+
},
31+
brand:{
32+
type: String,
33+
enum: ['Apple','Samsung','Lenovo','HP'],
34+
},
35+
images: {
36+
type: Array,
37+
},
38+
sold: {
39+
type: Number,
40+
default: 0,
41+
},
42+
color: {
43+
type:String,
44+
enum:['Black','Brown','Red'],
45+
},
46+
ratings: [{
47+
star: Number,
48+
postedBy: {
49+
type: mongoose.Schema.Types.ObjectId,
50+
ref: "User",
51+
},
52+
}]
53+
}, { timestamps: true });
54+
55+
//Export the model
56+
module.exports = mongoose.model('Product', productSchema);

routes/authRoute.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
const express = require("express");
2-
const { createUser, loginUserCtrl, getAllUsers,getAUser,deleteUser,updateUser, blockUser,unblockUser,handleRefreshToken } = require("../controller/userCtrl");
2+
const { createUser, loginUserCtrl, getAllUsers,getAUser,deleteUser,updateUser, blockUser,unblockUser,logout,handleRefreshToken } = require("../controller/userCtrl");
33
const { authMiddleware, isAdmin } = require("../middlewares/authMiddleware");
44
const router = express.Router();
55

6+
router.get("/logout", logout)
67
router.post("/register", createUser);
78
router.post("/login", loginUserCtrl);
89
router.get("/all-users", getAllUsers);

routes/productRoute.js

Whitespace-only changes.

0 commit comments

Comments
 (0)