Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
.env

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
Expand Down
29 changes: 29 additions & 0 deletions Backend/Models/User.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema(

{
username: {
type: String,
required:true,
},
email: {
type:String,
required:true,
unique:true,
},
password:{
type:String,
required:true,
},
isAdmin: {
type:Boolean,
required:true,
default:false,
},

},
{timestamps:true}
)

const User = mongoose.model('User',UserSchema)
module.exports = User;
58 changes: 58 additions & 0 deletions Backend/Routes/router.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
const express = require('express');
const router = express.Router();
const products = require('../Models/Products');
const user = require ('../Models/User')
const bcrypt = require('bcrypt')
const createToken = require ('../utils/CreateToken')

//Inserting(Creating) Data:
router.post("/insertproduct", async (req, res) => {
Expand Down Expand Up @@ -78,6 +81,61 @@ router.delete('/deleteproduct/:id', async (req, res) => {
console.log(err);
}
})
router
.post('/addeduser', async (req,res) => {
const {username , email , password }= req.body;
if (!username || !email || !password){
throw new Error("please fill all the inputs");
}
const userExists = await user.findOne({email});

if (userExists) {res.status(400).send("user already exits")} ;
const salt = await bcrypt.genSalt(10);
const hashedPassword = await bcrypt.hash(password, salt);
const newUser = new user({username , email , password:hashedPassword});
try {
await newUser.save();
createToken(res, newUser._id);
res.status(201).json({
_id: newUser._id,
username: newUser.username,
email: newUser.email,
isAdmin: newUser.isAdmin,
});
} catch (error) {
console.error("Error while saving user:", error); // Log the actual error message
res.status(400).json({ message: "Invalid user data", error: error.message });
}

})
.post("/login", async (req,res) => {
const {email , password} =req.body;
const existingUser = await user.findOne({email});
if (!existingUser){
res.status(404);
throw new Error("user not found")
}
const isPasswordValid = await bcrypt.compare(password, existingUser.password);
if (!isPasswordValid){
res.status(401);
throw new Error ("incorrect password");
}
createToken(res, existingUser._id);
res.status(200).json({
_id:existingUser._id,
username: existingUser.username,
email: existingUser.email,
isAdmin:existingUser.isAdmin,
})
})
.post("/logout", async(req,res)=> {
res.cookie("jwt","",{
httpOnly:true,
expires:new Date(0),
})
res.status(200).json({message:"logged out succefuly"})
})



module.exports = router;
4 changes: 3 additions & 1 deletion Backend/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ connectToMongo();
const express = require('express')
const app = express()
const port = 3001

const cookieParser = require ('cookie-parser')
const cors = require('cors')
const router = require('./Routes/router')

app.use(cors());
app.use(express.json());
app.use(router);
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());

app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
Expand Down
Loading