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
2 changes: 2 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
DATABASE = mongodb+srv://Blessingade:Ade08130817324.@ecommerce.gtnvf8m.mongodb.net/Ecommerce?retryWrites=true&w=majority
PASS_SEC_KEY = absterky
44 changes: 44 additions & 0 deletions Route/authRoute.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
const express = require("express")
const authRouter = express.Router()
const cryptoJs = require("crypto-js")
const userAuthController = require("../controller/userAuthController")


const User = require('../model/userModel.js');

//REGISTER USER
authRouter.post("/register", userAuthController)

// LOGIN

// router.post("/login", async (req, res)=>{

// try{
// const registeredUser = await User.findOne(
// {username: req.body.username}
// )
// console.log(registeredUser)
// if(!registeredUser){

// res.status(400).json("wrong username")

// }

// //DECRYPT PASSWORD
// const decryptPassword = cryptoJs.AES.decrypt(
// registeredUser.password,
// process.env.PASS_SEC_KEY
// );

// const password = decryptPassword.toString(cryptoJs.enc.Utf8)

// password !== req.body.password && res.status(400).json("Wrong password")

// res.status(200).json(registeredUser)


// }catch(err) {res.status(401).json(err)}
// })


module.exports = authRouter
20 changes: 20 additions & 0 deletions Route/orderRoute.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
const express = require ("express")


const orderRouter = express.Router()


const { createOrder, getOrder, getOrders, updateOrder, deleteOrder } = require ("../controller/orderControler")

orderRouter.post("/order", createOrder)

orderRouter.get("/order/:orderId", getOrder)

orderRouter.get("/orders", getOrders)

orderRouter.patch("/order/:id", updateOrder)

orderRouter.delete("/order/:id", deleteOrder)


module.exports = orderRouter
116 changes: 116 additions & 0 deletions controller/orderControler.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
const Order = require ("../model/orderModel")
const moment = require ("moment")


const createOrder = async (req, res) => {
const body = req.body;

const total_price = body.items.reduce((prev, curr) => {
prev += curr.price
return prev
}, 0);

const order = await Order.create({
items: body.items,
created_at: moment().toDate(),
total_price
})

return res.json({ status: true, order })
}

const getOrder = async (req, res) => {
const { orderId } = req.params;
const order = await Order.findById(orderId)

if (!order) {
return res.status(404).json({ status: false, order: null })
}

return res.json({ status: true, order })
}

const getOrders = async (req, res) => {

const { query } = req;

const {
created_at,
state,
order = 'asc',
order_by = 'created_at',
page = 1,
per_page = 10
} = query;

const findQuery = {};

if (created_at) {
findQuery.created_at = {
$gt: moment(created_at).startOf('day').toDate(),
$lt: moment(created_at).endOf('day').toDate(),
}
}

if (state) {
findQuery.state = state;
}

const sortQuery = {};

const sortAttributes = order_by.split(',')

for (const attribute of sortAttributes) {
if (order === 'asc' && order_by) {
sortQuery[attribute] = 1
}

if (order === 'desc' && order_by) {
sortQuery[attribute] = -1
}
}


const orders = await Order
.find(findQuery)
.sort(sortQuery)
.skip(page)
.limit(per_page)

return res.json({ status: true, orders })
}


const updateOrder = async (req, res) => {
const { id } = req.params;
const { state } = req.body;

const order = await Order.findById(id)

if (!order) {
return res.status(404).json({ status: false, order: null })
}

if (state < order.state) {
return res.status(422).json({ status: false, order: null, message: 'Invalid operation' })
}

order.state = state;

await order.save()

return res.json({ status: true, order })
}

const deleteOrder = async (req, res) => {
const { id } = req.params;

const order = await Order.deleteOne({ _id: id})

return res.json({ status: true, order })
}




module.exports = { createOrder, getOrder, getOrders, updateOrder, deleteOrder }
50 changes: 50 additions & 0 deletions controller/userAuthController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
const jwt = require('jsonwebtoken');
const User = require("../model/userModel")

require('dotenv').config();

const signup = async (req, res) => {

const newUser = new User ({
username: req.body.username,
email: req.body.email,
password: req.body.password
})
try{
const savedUser = await newUser.save()
console.log(savedUser)
res.status(200).json("registration successful")

}catch(err) {
console.log(err)
res.status(404).json(err)
}

//res.json({
//message: 'Signup successful',
// user: req.user
//});
}

// const login = (req, res, { err, user, info}) => {

// if (!user) {
// return res.json({ message: 'Username or password is incorrect'})
// }

// // req.login is provided by passport
// req.login(user, { session: false },
// async (error) => {
// if (error) return res.status(400).json(error)

// const body = { _id: user._id, username: user.username };
// //You store the id and username in the payload of the JWT.
// // You then sign the token with a secret or key (JWT_SECRET), and send back the token to the user.
// // DO NOT STORE PASSWORDS IN THE JWT!
// const token = jwt.sign({ user: body }, process.env.JWT_SECRET || 'something_secret');

// return res.status(200).json({ token });
// }
// );
//}
module.exports = signup
83 changes: 10 additions & 73 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,85 +1,22 @@
const express = require('express');
const moment = require('moment');
const mongoose = require('mongoose');
const orderModel = require('./orderModel');
const orderRouter = require("./Route/orderRoute")
const authRoute = require("./Route/authRoute")

const PORT = 3334

const app = express()
const dotEnv = require('dotenv')
dotEnv.config()

app.use(express.json());


app.get('/', (req, res) => {
return res.json({ status: true })
})


app.post('/order', async (req, res) => {
const body = req.body;

const total_price = body.items.reduce((prev, curr) => {
prev += curr.price
return prev
}, 0);

const order = await orderModel.create({
items: body.items,
created_at: moment().toDate(),
total_price
})

return res.json({ status: true, order })
})

app.get('/order/:orderId', async (req, res) => {
const { orderId } = req.params;
const order = await orderModel.findById(orderId)

if (!order) {
return res.status(404).json({ status: false, order: null })
}

return res.json({ status: true, order })
})

app.get('/orders', async (req, res) => {
const orders = await orderModel.find()
const PORT = 8888

return res.json({ status: true, orders })
})
const app = express();

app.patch('/order/:id', async (req, res) => {
const { id } = req.params;
const { state } = req.body;

const order = await orderModel.findById(id)

if (!order) {
return res.status(404).json({ status: false, order: null })
}

if (state < order.state) {
return res.status(422).json({ status: false, order: null, message: 'Invalid operation' })
}

order.state = state;

await order.save()

return res.json({ status: true, order })
})

app.delete('/order/:id', async (req, res) => {
const { id } = req.params;

const order = await orderModel.deleteOne({ _id: id})

return res.json({ status: true, order })
})
app.use(express.json());

app.use("/Api" , orderRouter)
app.use("/Api", authRoute )

mongoose.connect('mongodb://localhost:27017')
mongoose.connect(process.env.DATABASE)

mongoose.connection.on("connected", () => {
console.log("Connected to MongoDB Successfully");
Expand Down
24 changes: 24 additions & 0 deletions middleware/basicAuth.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// function BasicAuth (req, res, next) {
// const authheader = req.headers.authorization;

// if (!authheader) {
// res.setHeader('WWW-Authenticate', 'Basic');
// return res.status(401).json({ message: 'You are not authenticated!' });
// }

// const auth = new Buffer.from(authheader.split(' ')[1],
// 'base64').toString().split(':');

// const user = auth[0];
// const pass = auth[1];

// if (user == 'admin' && pass == 'password') {
// // If Authorized user
// next();
// } else {
// res.setHeader('WWW-Authenticate', 'Basic');
// return res.status(401).json({ message: 'You are not authenticated!' });
// }
// }

// module.exports = BasicAuth;
File renamed without changes.
Loading