From 326bdf862b4b1b702e47a2d94a73a1f4e6bc974f Mon Sep 17 00:00:00 2001 From: Astel Date: Mon, 21 Dec 2020 12:43:54 +0530 Subject: [PATCH 1/6] fix: change routes in signup and login templates --- index.js | 4 ++-- models/complain.js | 1 - views/{complaintForm.html => complaintForm.ejs} | 7 ++++++- views/login.ejs | 2 +- views/partials/header.ejs | 4 ---- views/{sign.html => signup.ejs} | 9 ++++++--- 6 files changed, 15 insertions(+), 12 deletions(-) rename views/{complaintForm.html => complaintForm.ejs} (96%) rename views/{sign.html => signup.ejs} (90%) diff --git a/index.js b/index.js index 2698fde..889ef74 100644 --- a/index.js +++ b/index.js @@ -52,11 +52,11 @@ app.get('/contact', (req, res) => { }); app.get('/login', (req, res) => { - res.render('auth'); + res.render('login'); }); app.get('/signup', (req, res) => { - res.render('auth'); + res.render('signup'); }); diff --git a/models/complain.js b/models/complain.js index 41abe25..dc000d3 100644 --- a/models/complain.js +++ b/models/complain.js @@ -32,5 +32,4 @@ const Complain=mongoose.model('complain',new mongoose.Schema({ })); -// exports.Complain=Complain; module.exports=Complain; \ No newline at end of file diff --git a/views/complaintForm.html b/views/complaintForm.ejs similarity index 96% rename from views/complaintForm.html rename to views/complaintForm.ejs index acc8a04..0b58635 100644 --- a/views/complaintForm.html +++ b/views/complaintForm.ejs @@ -7,12 +7,15 @@ - + Hostel Problems + + <%- include('partials/header.ejs') %> +
@@ -68,6 +71,8 @@

Put the details here

+ <%- include('partials/footer.ejs') %> + diff --git a/views/login.ejs b/views/login.ejs index 299d934..5aa3d11 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -42,7 +42,7 @@ Forgot Password? -

Don't have an account? Register here

+

Don't have an account? Register here

diff --git a/views/partials/header.ejs b/views/partials/header.ejs index 51cb245..b4a07fa 100644 --- a/views/partials/header.ejs +++ b/views/partials/header.ejs @@ -16,10 +16,6 @@ Log In      - - - Log In      - Sign Up diff --git a/views/sign.html b/views/signup.ejs similarity index 90% rename from views/sign.html rename to views/signup.ejs index 08ed128..5707281 100644 --- a/views/sign.html +++ b/views/signup.ejs @@ -10,17 +10,19 @@ integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous" /> - + Hostel Problems + +
- +

Welcome,

@@ -46,13 +48,14 @@

Sign Up

-

Already have an account? Login

+

Already have an account? Login

+ - - \ No newline at end of file From 0af31c594c87793ecdd51a3801e43b273b65da84 Mon Sep 17 00:00:00 2001 From: Astel Date: Tue, 22 Dec 2020 19:17:47 +0530 Subject: [PATCH 3/6] fix: change routes for profile page --- .gitignore | 2 ++ index.js | 18 +++++++++++++----- views/complaintForm.ejs | 5 +++-- views/partials/header.ejs | 5 ----- views/profile.ejs | 28 ++++++---------------------- 5 files changed, 24 insertions(+), 34 deletions(-) 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 50cffb0..2310ea6 100644 --- a/index.js +++ b/index.js @@ -34,11 +34,19 @@ app.set('view engine', 'ejs'); // basic routes app.get('/', (req, res) => { - Complain.find({},function(err,data){ - console.log(data); - res.render('index',{data}); - } - ) + + const data = [ + {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, + {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, + {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, + {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, + {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, + {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, + {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, + {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, + ]; + + res.render('index', { data }); }); app.get('/complaint', (req, res) => { diff --git a/views/complaintForm.ejs b/views/complaintForm.ejs index 1876097..115524e 100644 --- a/views/complaintForm.ejs +++ b/views/complaintForm.ejs @@ -13,8 +13,9 @@ - - <%- include('partials/header.ejs') %> +
+ <%- include('partials/header.ejs') %> +
diff --git a/views/partials/header.ejs b/views/partials/header.ejs index 5cb2221..04367ce 100644 --- a/views/partials/header.ejs +++ b/views/partials/header.ejs @@ -15,13 +15,8 @@ Log In      -<<<<<<< HEAD - - Sign Up -======= Sign Up ->>>>>>> upstream/master
diff --git a/views/profile.ejs b/views/profile.ejs index 7719a9c..beefc1c 100644 --- a/views/profile.ejs +++ b/views/profile.ejs @@ -9,34 +9,18 @@ crossorigin="anonymous" > - + - - + + Hostel Complaints
- + <%- include('partials/header.ejs'); %>
@@ -44,7 +28,7 @@

here comes quotes

- +
Register Complaint @@ -63,7 +47,7 @@
- +
From 19f9c4f8d83527e859336176c2e08c84013df104 Mon Sep 17 00:00:00 2001 From: Astel Date: Wed, 23 Dec 2020 20:18:58 +0530 Subject: [PATCH 4/6] fix error --- index.js | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/index.js b/index.js index 2310ea6..50cffb0 100644 --- a/index.js +++ b/index.js @@ -34,19 +34,11 @@ app.set('view engine', 'ejs'); // basic routes app.get('/', (req, res) => { - - const data = [ - {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, - {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, - {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, - {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, - {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, - {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, - {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, - {"name":"Drake", "type":"Electrical", "RoomNo":"A-324", "typeOF":"Fan", "problem":"lorem ipsum", "phone":"1233456"}, - ]; - - res.render('index', { data }); + Complain.find({},function(err,data){ + console.log(data); + res.render('index',{data}); + } + ) }); app.get('/complaint', (req, res) => { From 27ab118f0a1ba157a6a90a2d6eb766452a8a9857 Mon Sep 17 00:00:00 2001 From: Astel Date: Wed, 23 Dec 2020 21:44:20 +0530 Subject: [PATCH 5/6] feat: add template for rendering user data on profile --- index.js | 12 ++++++++++-- views/profile.ejs | 12 ++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index 5ef3a7d..d22b64e 100644 --- a/index.js +++ b/index.js @@ -47,8 +47,16 @@ app.get('/complaint', (req, res) => { }); app.get('/profile',checkAuth, (req, res) => { - // rendering index page as profile doesn't exist yet - res.render('profile'); + // render dummy data + const userData = { + username: "Moon", + name: "Ras", + type: "Gajjar", + RoomNo: "A-111", + complaintsPending: 3, + complantsSolved: 5 + }; + res.render('profile', { userData }); }); app.get('/about', (req, res) => { diff --git a/views/profile.ejs b/views/profile.ejs index a6105f2..12cd74e 100644 --- a/views/profile.ejs +++ b/views/profile.ejs @@ -54,17 +54,17 @@
Username:
-
dhrutik
+
<%= userData.username %>
Name:
-
Dhrutik Patel
+
<%= userData.name %>
Hostel Name:
-
Bhabha bhavan
+
<%= userData.type %>
Room No.:
-
D-111
+
<%= userData.RoomNo %>
No. of complains pending
-
1
+
<%= userData.complaintsPending %>
No. of complains solved
-
1
+
<%= userData.complaintsSolved %>
From b3c4f3b6ce4301f6ba1d69c9cfcec67618a0b574 Mon Sep 17 00:00:00 2001 From: Astel Date: Mon, 4 Jan 2021 17:08:38 +0530 Subject: [PATCH 6/6] feat: add conditional navbar --- index.js | 5 ++++- middleware/auth.js | 36 +++++++++++++++++++++++++++++++++--- routes/login.js | 5 +++++ views/partials/header.ejs | 24 +++++++++++++++++------- 4 files changed, 59 insertions(+), 11 deletions(-) diff --git a/index.js b/index.js index df08767..d9eadc2 100644 --- a/index.js +++ b/index.js @@ -7,7 +7,7 @@ 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')); @@ -17,6 +17,9 @@ const { use } = require('./routes/Complains'); app.use(bodyParser.urlencoded({ extended: true })); app.use(express.json()); + +// check if user is logged before every request +app.get('*', checkUser); app.use('/complains',complains); app.use('/loged',loged); diff --git a/middleware/auth.js b/middleware/auth.js index 247fb60..89f89c6 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) { res.status(500).json({err:"Not Authorized"}) @@ -26,4 +28,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 } \ No newline at end of file diff --git a/routes/login.js b/routes/login.js index 1184ae8..dd04cd8 100644 --- a/routes/login.js +++ b/routes/login.js @@ -138,6 +138,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/partials/header.ejs b/views/partials/header.ejs index 4426f0f..8025b53 100644 --- a/views/partials/header.ejs +++ b/views/partials/header.ejs @@ -14,13 +14,23 @@ - - Log In - -      - - Sign Up - + <% if(username) { %> + + Log In + +      + + Sign Up + + <% } else { %> + + <% username %> + +      + + Log Out + + <% } %>