Login RestFul API With JWT Auth Token In Node, Express JS, and MongoDB
1. Index.js
const express = require('express');
const mongoose = require('mongoose');
const app = express();
mongoose.connect("mongodb://127.0.0.1:27017/ECOM")
//load routes
const user_route = require("./routes/userRoute")
app.use('/api',user_route)
app.listen('3000',()=>{
console.log("Server Connected Successfully..")
})
2. Config.js
const config = {
secret_key:"Thisisasecretkey."
}
module.exports = config;
3. Controllers
const User = require("../models/userModel");
const bcryptjs = require("bcryptjs");
const jwtkey = require("jsonwebtoken");
const config = require("../config/config");
const create_token = async (id) => {
try {
const token = await jwtkey.sign({ _id: id }, config.secret_key);
return token;
} catch (error) {
res.status(400).send(error.message);
}
};
const securePassword = async (password) => {
try {
const passwordhash = await bcryptjs.hash(password, 10);
return passwordhash;
} catch (error) {
res.status(400).send(error.message);
}
};
const register_user = async (req, res) => {
try {
const spassword = await securePassword(req.body.password);
const user = new User({
name: req.body.name,
email: req.body.email,
password: spassword,
image: req.file.filename,
mobile: req.body.mobile,
type: req.body.type,
});
//Match E-mail ---
const userData = await User.findOne({ email: req.body.email });
if (userData) {
res
.status(200)
.send({ success: false, msg: "The Email is already Exists" });
} else {
const userRegisterData = await user.save();
res.status(200).send({ success: true, msg: userRegisterData });
}
} catch (error) {
res.status(400).send(error.message);
}
};
const user_login = async (req, res) => {
//try{
const email = req.body.email;
const password = req.body.password;
const userData = await User.findOne({ email: email });
if (userData) {
const passwordMatch = await bcryptjs.compare(password, userData.password);
if (passwordMatch) {
const tokenData = await create_token(userData._id);
const userResult = {
_id: userData._id,
name: userData.name,
email: userData.email,
password: userData.password,
image: userData.image,
mobile: userData.mobile,
type: userData.type,
token: tokenData,
};
const response = {
success: true,
msg: "User Deatails",
data: userResult,
};
res.status(200).send(response);
} else {
res
.status(200)
.send({ success: false, msg: "Login Details are incorrect.1" });
}
} else {
res
.status(200)
.send({ success: false, msg: "Login Details are incorrect.2" });
}
// }catch(error){
// res.status(400).send(error.message)
// }
};
module.exports = { register_user, user_login };
4.Routes
const express = require('express');
const user_route = express();
const bodyParser = require('body-parser');
user_route.use(bodyParser.json());
user_route.use(bodyParser.urlencoded({extended:true}));
const multer = require('multer');
const path = require('path');
user_route.use(express.static('public'));
const storage = multer.diskStorage({
destination:function(req,file,cb){
cb(null,path.join(__dirname,'../public/userImages'),function(error,success){
if(error) throw error
});
},
filename:function(req,file,cb){
const name = Date.now() +'-'+ file.originalname;
cb(null, name , function(error1,success1){
if(error1) throw error1
})
}
});
const upload = multer({storage:storage});
const userController = require("../controllers/userControllers");
user_route.post('/register',upload.single('image'),userController.register_user);
user_route.post('/login',userController.user_login);
module.exports = user_route;
5.Models
const mongoose = require('mongoose')
const userSchema = mongoose.Schema({
name:{type:String,required:true,trim:true},
email:{type:String,required:true},
password:{type:String,required:true},
image:{type:String,required:true},
mobile:{type:Number,required:true},
type:{type:Number,required:true}
})
module.exports = mongoose.model("User",userSchema)
Comments
Post a Comment