diff --git a/.gitignore b/.gitignore index 4dcec4c..79a202a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /node_modules + +.env diff --git a/index.js b/index.js index f442685..1565177 100644 --- a/index.js +++ b/index.js @@ -7,8 +7,8 @@ const app=express(); const complains=require('./routes/Complains'); const loged=require('./routes/login'); const Complain=require('./models/complain'); -const checkAuth=require('./middleware/auth'); +const { checkAuth, checkUser } =require('./middleware/auth'); //built in middleware for serving static files app.use(cookieParser()); app.use(express.static('public')); @@ -20,6 +20,8 @@ const { use } = require('./routes/Complains'); app.use(bodyParser.urlencoded({ extended: true })); app.use(express.json()); + +app.get('*', checkUser); app.use('/complains',complains); @@ -96,4 +98,4 @@ app.get('/signup', (req, res) => { const port =process.env.PORT || 3000; //asynchronous function handles wih callback -app.listen(port,()=>console.log(`Listening to port ${port}...`)); \ No newline at end of file +app.listen(port,()=>console.log(`Listening to port ${port}...`)); diff --git a/middleware/auth.js b/middleware/auth.js index f54efb3..67167f1 100644 --- a/middleware/auth.js +++ b/middleware/auth.js @@ -1,13 +1,15 @@ const jwt=require('jsonwebtoken'); var cookieParser = require('cookie-parser') require('dotenv').config() +const User = require('../models/Users'); -module.exports=(req,res,next)=>{ +const checkAuth=(req,res,next)=>{ try{ // console.log('hello'); - console.log(req.cookies.token); + const token = req.cookies.token; + console.log(token); // console.log(process.env.JWT_KEY); - jwt.verify(req.cookies.token, process.env.JWT_KEY,(err,decoded)=>{ + jwt.verify(token, process.env.JWT_KEY,(err,decoded)=>{ if(err) { console.log("Not Authorized"); // res.status(500).json({err:"Not Authorized"}) @@ -31,4 +33,32 @@ module.exports=(req,res,next)=>{ } -} +} + +const checkUser = (req, res, next) => { + const token = req.cookies.token; + + // verification of token + if(token) { + jwt.verify(token, JWT_KEY, async (err, decodedToken) => { + if(err) { + console.log(err.message); + res.locals.user = null; + next(); + } else { + //console.log(decodedToken); + let user = await User.findById(decodedToken.id); + res.locals.user = user; + next(); + } + }); + } else { + res.locals.user = null; + next(); + } +} + +module.exports = { + checkAuth, + checkUser +} diff --git a/models/complain.js b/models/complain.js index 9d4ca83..5e8b889 100644 --- a/models/complain.js +++ b/models/complain.js @@ -31,5 +31,4 @@ const Complain=mongoose.model('complain',new mongoose.Schema({ })); -// exports.Complain=Complain; module.exports=Complain; \ No newline at end of file diff --git a/routes/login.js b/routes/login.js index ce68025..4ae0276 100644 --- a/routes/login.js +++ b/routes/login.js @@ -143,6 +143,11 @@ router.delete('/:userId',(req,res,next)=>{ }); }); +router.get((req, res, next) => { + // replace existing cookie with fast expiring cookie + res.cookie('token', '', { maxAge: 1 }); + res.redirect('/'); +}); // router.post('/login', (req, res) => { // const email = req.body.email; diff --git a/views/complaintForm.ejs b/views/complaintForm.ejs index 506dd2d..76a538e 100644 --- a/views/complaintForm.ejs +++ b/views/complaintForm.ejs @@ -14,6 +14,10 @@
+