Commit ec09b27f by Shaik Moses

with database

parent 26dfbe9e
ACCESS_TOKEN=a1cf0e9b88b85a81ccfaebf1e7a1a5636fff70d16d9a68ee7c8f6e18985cbac68e6206175f319b0f045ca9554a38039cb11c50b18c92ab46abbd6d19b3904031 ACCESS_TOKEN=a1cf0e9b88b85a81ccfaebf1e7a1a5636fff70d16d9a68ee7c8f6e18985cbac68e6206175f319b0f045ca9554a38039cb11c50b18c92ab46abbd6d19b3904031
REFRESH_ACCESS_TOKEN=1eab8976df88c553a16cecf187fc29c5cd9a16a5665c8571506acdb9d595587afbe76e8e2633fde572a20bb342d91bb4e508c26cb7837b62eedaffe73106d1f4 REFRESH_ACCESS_TOKEN=1eab8976df88c553a16cecf187fc29c5cd9a16a5665c8571506acdb9d595587afbe76e8e2633fde572a20bb342d91bb4e508c26cb7837b62eedaffe73106d1f4
\ No newline at end of file MONGO_DB_URL = mongodb://localhost:27017/jwt_toots
\ No newline at end of file
const jwt= require("jsonwebtoken") const jwt= require("jsonwebtoken")
require('dotenv').config()
const authontication=(req,res,next)=>{ // const authontication=(req,res,next)=>{
const header = req.headers['authorization'] // const header = req.headers['authorization']
const token = header && header.split(' ')[1] // const token = header && header.split(' ')[1]
if(token == null)return res.status(400) // if(token == null)return res.status(400)
jwt.verify(token,process.env.ACCESS_TOKEN,(err,user)=>{ // jwt.verify(token,process.env.ACCESS_TOKEN,(err,user)=>{
if(err) return res.status(403) // if(err) return res.status(403)
req.user = user // req.user = user
}) // })
next() // next()
} // }
const authontication =(req,res,next)=>{
const token = req.header('auth-token')
if(!token)return res.status(401)
try {
const verified = jwt.verify(token,process.env.ACCESS_TOKEN)
req.user = verified
next()
} catch (err) {
res.status(400)
}
}
module.exports= authontication module.exports= authontication
\ No newline at end of file
const mongoose = require('mongoose')
const User_sechma = new mongoose.Schema({
name : {
type : String,
required : true,
min : 6,
max : 255
},
email : {
type : String,
required : true,
max : 255,
min : 6
},
password : {
type : String,
required : true,
max : 1024,
min : 6
},
date : {
type : Date,
default: Date.now()
}
})
module.exports = mongoose.model('user_data',User_sechma)
\ No newline at end of file
...@@ -10,9 +10,11 @@ ...@@ -10,9 +10,11 @@
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"bcryptjs": "^2.4.3",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"express": "^4.17.1", "express": "^4.17.1",
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",
"mongoose": "^5.12.2",
"nodemon": "^2.0.7" "nodemon": "^2.0.7"
} }
} }
require('dotenv').config()
const express = require('express') const express = require('express')
const router = express.Router() const router = express.Router()
const AUTH = require('./authentication.js') const User = require('./models/User_model')
const jwt= require("jsonwebtoken") const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
// const AUTH = require('./authentication.js')
// const jwt= require("jsonwebtoken")
const post_data=[ // const post_data=[
{ // {
name : "cool" // name : "cool"
}, // },
{ // {
name:"coool1" // name:"coool1"
} // }
] // ]
router.get('/',AUTH,(req,res)=>{ // router.get('/',AUTH,(req,res)=>{
const post=post_data.filter(post=> post.name === req.user.name) // const post=post_data.filter(post=> post.name === req.user.name)
if(post.length == 0){ // if(post.length == 0){
res.json({message:"this is empty"}) // res.json({message:"this is empty"})
}else{ // }else{
res.json({data:post_data.filter(post=> post.name === req.user.name)}) // res.json({data:post_data.filter(post=> post.name === req.user.name)})
} // }
}) // })
router.post('/login',(req,res)=>{ // router.post('/login',(req,res)=>{
const name = req.body.name // const name = req.body.name
const user = {name : name} // const user = {name : name}
const access_token=jwt.sign(user,process.env.ACCESS_TOKEN,{expiresIn : '100s'}) // const access_token=jwt.sign(user,process.env.ACCESS_TOKEN,{expiresIn : '100s'})
res.json({access_token:access_token}) // res.json({access_token:access_token})
// })
router.post('/register',async(req,res)=>{
// to check wheather email is in database or not
const exist_email = await User.findOne({email : req.body.email})
if(exist_email) return res.status(400).send("this email already exist")
const salt = await bcrypt.genSalt(10)
const hashedPassword = await bcrypt.hash(req.body.password,salt)
//to create new user if not exist
const user = new User({
name : req.body.name,
password : hashedPassword,
email : req.body.email,
})
try {
const save_data =await user.save()
res.send(save_data)
} catch (error) {
res.status(400).send(error)
}
}) })
router.post('/login',async(req,res)=>{
const user = await User.findOne({email : req.body.email})
if(!user) return res.status(400).send("email or password is not correct")
const validpass = await bcrypt.compare(req.body.password,user.password)
if(!validpass)return res.status(400).send("invalid password")
const token = jwt.sign({_id : user._id},process.env.ACCESS_TOKEN)
res.header('auth-token',token).send(token)
})
module.exports = router module.exports = router
\ No newline at end of file
...@@ -3,11 +3,15 @@ const express = require('express') ...@@ -3,11 +3,15 @@ const express = require('express')
const app = express() const app = express()
const jwt = require('jsonwebtoken') const jwt = require('jsonwebtoken')
const router = require('./routes.js') const router = require('./routes.js')
const mongoose = require('mongoose')
//to parse the data in json //to parse the data in json
app.use(express.json()) app.use(express.json())
mongoose.connect(process.env.MONGO_DB_URL,{ useNewUrlParser: true ,useUnifiedTopology: true },()=>console.log("db"))
//api for jwt authentication //api for jwt authentication
app.use('/api',router) app.use('/api',router)
//port config //port config
app.listen(3000,()=>console.log("this server is running at 3000")) app.listen(3000,()=>console.log("this server is running at 3000"))
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment