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
37 changes: 23 additions & 14 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
17 changes: 17 additions & 0 deletions src/Models/User.js
Original file line number Diff line number Diff line change
@@ -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);
43 changes: 40 additions & 3 deletions src/Routes/userRoute.js
Original file line number Diff line number Diff line change
@@ -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;
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;
48 changes: 48 additions & 0 deletions src/controllers/UserController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import User from "../Models/User";
import bcrypt from "bcrypt";
import jwt from "jsonwebtoken";


class UserController{
static async getAllUsers(req,res){
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){
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})
}

}
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;
6 changes: 6 additions & 0 deletions src/route/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import {Router} from "express";
import users from "./UserRoute"
const router = Router();
router.use("/api/users",users);

export default router;
44 changes: 44 additions & 0 deletions src/route/userRoute.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import express from "express";
import User from "../Models/User";
import bcrypt from "bcrypt";
import jwt from "jsonwebtoken";
import UserController from "../controllers/UserController";


const router = express.Router();
// router.get("/", (req, res) => {
// return res.send({ message: "All Users!!!" })
// });

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);
router.patch("/:id",UserController.UpdateUser)

export default router;