From 7dae2e10c3a38307262e8af6952a85ed03265248 Mon Sep 17 00:00:00 2001 From: ImpuhweStella Date: Thu, 24 Nov 2022 07:44:28 +0200 Subject: [PATCH 1/3] login and register backend --- server.js | 37 +++++++++++++++----------- src/Models/User.js | 17 ++++++++++++ src/controllers/UserController.js | 34 ++++++++++++++++++++++++ src/route/index.js | 2 +- src/route/userRoute.js | 43 ++++++++++++++++++++++++++++--- 5 files changed, 114 insertions(+), 19 deletions(-) create mode 100644 src/Models/User.js create mode 100644 src/controllers/UserController.js diff --git a/server.js b/server.js index 8159cf3..94f8496 100644 --- a/server.js +++ b/server.js @@ -1,32 +1,39 @@ import express from "express"; import "dotenv/config"; import bodyParser from "body-parser"; - import mongoose from "mongoose"; import index from "./src/route/index" -import cors from "cors" +import cors from "cors"; +import userRoute from "./src/route/UserRoute"; const app = express(); app.use(cors()); app.use(bodyParser.json()); -app.use("/",index); +// app.use("/",index); + + +app.use("/users", userRoute); + //DATABASE CONFIGURATION -const database = process.env.DATABASE; -mongoose - .connect(database, { - useNewUrlParser: true, - useUnifiedTopology: true, - }) - .then(() => { - console.log("Database connected successfully!"); - }); +// const database = process.env.DATABASE; +// mongoose +// .connect(database, { +// useNewUrlParser: true, +// useUnifiedTopology: true, +// }) +// .then(() => { +// console.log("Database connected successfully!"); +// }); //server configuration -const port = process.env.PORT || 3001; -app.listen(port, () => { - console.log(`server is running on port ${port}`); +mongoose.connect("mongodb://localhost:27017/users").then(()=>{ + app.listen(4000, () => { + console.log("server is running on port 4000!") + + }); + }); export default app; diff --git a/src/Models/User.js b/src/Models/User.js new file mode 100644 index 0000000..342af68 --- /dev/null +++ b/src/Models/User.js @@ -0,0 +1,17 @@ +import mongoose from "mongoose"; + +const UserSchema = mongoose.Schema({ + + names:String, + email:String, + password:String, + companyName:String, + telephoneNumber:String, + address:String, + // role:{ + // enum:["Admin","Retailer"], + // default:"Retailer" + // } +}) + +export default mongoose.model("User",UserSchema); \ No newline at end of file diff --git a/src/controllers/UserController.js b/src/controllers/UserController.js new file mode 100644 index 0000000..c17e285 --- /dev/null +++ b/src/controllers/UserController.js @@ -0,0 +1,34 @@ +import User from "../Models/User"; +import bcrypt from "bcrypt"; +import jwt from "jsonwebtoken"; + +class UserController{ + static async getAllUsers(req,res){ + res.send({data:getAllUsers}); + } + + static async createUser(req,res){ + try { + + const hashedPassword = bcrypt.hashSync(req.body.password,10); + const user = new User({ + names:req.body.names, + email:req.body.email, + password:hashedPassword, + companyName:req.body.companyName, + telephoneNumber:req.body.telephoneNumber, + address:req.body.address + + }) + await user.save(); + + const token = jwt.sign({email:User.email},"secret-key",{expiresIn:"1h"}); + return res.send({message:"Account Created!!!",data:token}) + } catch (error) { + return res.send({message:"Error",data:error.message}) + } + + } + +} +export default UserController; \ No newline at end of file diff --git a/src/route/index.js b/src/route/index.js index 43328c0..373293c 100644 --- a/src/route/index.js +++ b/src/route/index.js @@ -1,5 +1,5 @@ import {Router} from "express"; -import users from "./userRoute" +import users from "./UserRoute" const router = Router(); router.use("/api/users",users); diff --git a/src/route/userRoute.js b/src/route/userRoute.js index 8994a12..e243402 100644 --- a/src/route/userRoute.js +++ b/src/route/userRoute.js @@ -1,6 +1,43 @@ +import express from "express"; +import User from "../Models/User"; +import bcrypt from "bcrypt"; +import jwt from "jsonwebtoken"; +import UserController from "../controllers/UserController"; -import { Router } from "express"; +const router = express.Router(); +router.get("/", (req, res) => { + return res.send({ message: "All Users!!!" }) +}); -const route = Router(); -export default route; \ No newline at end of file +router.post("/login", async (req, res) => { + + + try { + + const email = req.body.email; + const password = req.body.password; + const hashedPassword = bcrypt.hashSync(password, 10); + const findUser = await User.findOne({ email: email }); + + if (findUser) { + const isPasswordValid = bcrypt.compareSync(password,findUser.password); + if (isPasswordValid) { + const token = jwt.sign({ email: findUser.email,id:findUser._id }, "secret-key", { expiresIn: "1h" }); + return res.send({ message: "Logged In!!!", data: token }); + } else { + return res.status(404).send({ message: "Incorrect Email or Password!!!" }); + } + } else { + res.status(404).send({ message: "Incorrect Email or Password!!!" }); + } + + } catch (error) { + return res.send({ message: "Error", data: error.message }) + } +}); + +router.post("/",UserController.createUser); +router.get("/",UserController.getAllUsers); + +export default router; From e87e070b326a837ee4345e7620d214742f885e5e Mon Sep 17 00:00:00 2001 From: ImpuhweStella Date: Thu, 24 Nov 2022 13:05:47 +0200 Subject: [PATCH 2/3] rebasing --- server.js | 37 ++++++++++++++++---------- src/Models/User.js | 17 ++++++++++++ src/Routes/userRoute.js | 43 ++++++++++++++++++++++++++++--- src/controllers/UserController.js | 0 src/route/index.js | 6 +++++ 5 files changed, 86 insertions(+), 17 deletions(-) create mode 100644 src/Models/User.js create mode 100644 src/controllers/UserController.js create mode 100644 src/route/index.js diff --git a/server.js b/server.js index 153acc8..0b110d5 100644 --- a/server.js +++ b/server.js @@ -2,32 +2,41 @@ import express from "express"; import "dotenv/config"; import bodyParser from "body-parser"; import mongoose from "mongoose"; -import index from "./src/Routes/index"; +import index from "./src/route/index" +import cors from "cors"; import product from "./src/Routes/ProductRoutes"; -import cors from "cors" +import userRoute from "./src/route/UserRoute"; const app = express(); app.use(cors()); app.use(bodyParser.json()); app.use("/api",index); app.use("/",product); +// app.use("/",index); + + +app.use("/users", userRoute); + //DATABASE CONFIGURATION -const database = process.env.DATABASE; -mongoose - .connect(database, { - useNewUrlParser: true, - useUnifiedTopology: true, - }) - .then(() => { - console.log("Database connected successfully!"); - }); +// const database = process.env.DATABASE; +// mongoose +// .connect(database, { +// useNewUrlParser: true, +// useUnifiedTopology: true, +// }) +// .then(() => { +// console.log("Database connected successfully!"); +// }); //server configuration -const port = process.env.PORT || 3001; -app.listen(port, () => { - console.log(`server is running on port ${port}`); +mongoose.connect("mongodb://localhost:27017/users").then(()=>{ + app.listen(4000, () => { + console.log("server is running on port 4000!") + + }); + }); export default app; \ No newline at end of file diff --git a/src/Models/User.js b/src/Models/User.js new file mode 100644 index 0000000..342af68 --- /dev/null +++ b/src/Models/User.js @@ -0,0 +1,17 @@ +import mongoose from "mongoose"; + +const UserSchema = mongoose.Schema({ + + names:String, + email:String, + password:String, + companyName:String, + telephoneNumber:String, + address:String, + // role:{ + // enum:["Admin","Retailer"], + // default:"Retailer" + // } +}) + +export default mongoose.model("User",UserSchema); \ No newline at end of file diff --git a/src/Routes/userRoute.js b/src/Routes/userRoute.js index 8994a12..e243402 100644 --- a/src/Routes/userRoute.js +++ b/src/Routes/userRoute.js @@ -1,6 +1,43 @@ +import express from "express"; +import User from "../Models/User"; +import bcrypt from "bcrypt"; +import jwt from "jsonwebtoken"; +import UserController from "../controllers/UserController"; -import { Router } from "express"; +const router = express.Router(); +router.get("/", (req, res) => { + return res.send({ message: "All Users!!!" }) +}); -const route = Router(); -export default route; \ No newline at end of file +router.post("/login", async (req, res) => { + + + try { + + const email = req.body.email; + const password = req.body.password; + const hashedPassword = bcrypt.hashSync(password, 10); + const findUser = await User.findOne({ email: email }); + + if (findUser) { + const isPasswordValid = bcrypt.compareSync(password,findUser.password); + if (isPasswordValid) { + const token = jwt.sign({ email: findUser.email,id:findUser._id }, "secret-key", { expiresIn: "1h" }); + return res.send({ message: "Logged In!!!", data: token }); + } else { + return res.status(404).send({ message: "Incorrect Email or Password!!!" }); + } + } else { + res.status(404).send({ message: "Incorrect Email or Password!!!" }); + } + + } catch (error) { + return res.send({ message: "Error", data: error.message }) + } +}); + +router.post("/",UserController.createUser); +router.get("/",UserController.getAllUsers); + +export default router; diff --git a/src/controllers/UserController.js b/src/controllers/UserController.js new file mode 100644 index 0000000..e69de29 diff --git a/src/route/index.js b/src/route/index.js new file mode 100644 index 0000000..373293c --- /dev/null +++ b/src/route/index.js @@ -0,0 +1,6 @@ +import {Router} from "express"; +import users from "./UserRoute" +const router = Router(); +router.use("/api/users",users); + +export default router; \ No newline at end of file From a228c11147f032fefd95620e7c6b9c43951789bc Mon Sep 17 00:00:00 2001 From: ImpuhweStella Date: Thu, 24 Nov 2022 14:35:53 +0200 Subject: [PATCH 3/3] Updating User --- src/controllers/UserController.js | 16 +++++++++++++++- src/route/userRoute.js | 7 ++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/controllers/UserController.js b/src/controllers/UserController.js index c17e285..7ba14a2 100644 --- a/src/controllers/UserController.js +++ b/src/controllers/UserController.js @@ -2,9 +2,14 @@ import User from "../Models/User"; import bcrypt from "bcrypt"; import jwt from "jsonwebtoken"; + class UserController{ static async getAllUsers(req,res){ - res.send({data:getAllUsers}); + const user= await User.find(); + if(!user){ + return res.status(404).json({error: "user are not exist"}) + } + return res.status(200).json({message: "get all Users successfully", User:user}) } static async createUser(req,res){ @@ -29,6 +34,15 @@ class UserController{ } } + static async UpdateUser(req,res){ + const UserUpdate = await User.findByIdAndUpdate(req.params.id,req.body,{ + new:true, + }); + if(!UserUpdate){ + return res.status(404).json({error: "nothing is going to update"}) + } + return res.status(200).json({message: "updating User Successfull", User:UserUpdate}) + } } export default UserController; \ No newline at end of file diff --git a/src/route/userRoute.js b/src/route/userRoute.js index e243402..721f70c 100644 --- a/src/route/userRoute.js +++ b/src/route/userRoute.js @@ -6,9 +6,9 @@ import UserController from "../controllers/UserController"; const router = express.Router(); -router.get("/", (req, res) => { - return res.send({ message: "All Users!!!" }) -}); +// router.get("/", (req, res) => { +// return res.send({ message: "All Users!!!" }) +// }); router.post("/login", async (req, res) => { @@ -39,5 +39,6 @@ router.post("/login", async (req, res) => { router.post("/",UserController.createUser); router.get("/",UserController.getAllUsers); +router.patch("/:id",UserController.UpdateUser) export default router;