Skip to content

Commit 57c9622

Browse files
committed
Added changes
1 parent 513be37 commit 57c9622

8 files changed

Lines changed: 79 additions & 43 deletions

File tree

app.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ const app = express();
55
const expressEjsLayout = require('express-ejs-layouts')
66
const flash = require('connect-flash');
77
const session = require('express-session');
8+
const passport = require("passport");
9+
10+
//passport config:
11+
require('./config/passport')(passport)
812
//mongoose
913
mongoose.connect('mongodb://localhost/test',{useNewUrlParser: true, useUnifiedTopology : true})
1014
.then(() => console.log('connected,,'))
@@ -21,7 +25,8 @@ app.use(session({
2125
resave : true,
2226
saveUninitialized : true
2327
}));
24-
28+
app.use(passport.initialize());
29+
app.use(passport.session());
2530
app.use(flash());
2631
app.use((req,res,next)=> {
2732
res.locals.success_msg = req.flash('success_msg');

config/auth.js

Lines changed: 8 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,9 @@
1-
const User = require('../models/user');
2-
const LocalStrategy = require('passport-local').Strategy;
3-
const bcrypt = require('bcrypt');
4-
5-
module.exports = function(passport){
6-
passport.use(
7-
new LocalStrategy({usernameField: 'email'},(email,password,done)=>{
8-
//match user
9-
User.findOne({email:email})
10-
.then((user)=>{
11-
if(!user){
12-
return done(null,false,{message:'email not registered'});
13-
}
14-
//math passwords
15-
bcrypt.compare(password,user.password,(err,isMatch)=>{
16-
if(err) throw err;
17-
if(isMatch){
18-
return done(null,user);
19-
} else{
20-
return done(null,false,{message: 'password incorrect'});
21-
}
22-
})
23-
})
24-
.catch((err)=>{console.log(err)})
25-
})
26-
)
27-
passport.serializeUser(function(user,done) {
28-
done(null,user.id);
29-
})
30-
passport.deserializeUser(function(id,done){
31-
User.findById(id,function(err,user){
32-
done(err,user);
33-
})
34-
})
1+
module.exports = {
2+
ensureAuthenticated : function(req,res,next) {
3+
if(req.isAuthenticated()) {
4+
return next();
5+
}
6+
req.flash('error_msg' , 'please login to view this resource');
7+
res.redirect('/users/login');
8+
}
359
}

config/passport.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
const User = require('../models/user');
2+
const LocalStrategy = require('passport-local').Strategy;
3+
const bcrypt = require('bcrypt');
4+
5+
module.exports = function(passport){
6+
passport.use(
7+
new LocalStrategy({usernameField: 'email'},(email,password,done)=>{
8+
//match user
9+
User.findOne({email:email})
10+
.then((user)=>{
11+
if(!user){
12+
return done(null,false,{message:'email not registered'});
13+
}
14+
//math passwords
15+
bcrypt.compare(password,user.password,(err,isMatch)=>{
16+
if(err) throw err;
17+
if(isMatch){
18+
return done(null,user);
19+
} else{
20+
return done(null,false,{message: 'password incorrect'});
21+
}
22+
})
23+
})
24+
.catch((err)=>{console.log(err)})
25+
})
26+
)
27+
passport.serializeUser(function(user,done) {
28+
done(null,user.id);
29+
})
30+
passport.deserializeUser(function(id,done){
31+
User.findById(id,function(err,user){
32+
done(err,user);
33+
})
34+
})
35+
}

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
"express": "^4.17.1",
2020
"express-ejs-layouts": "^2.5.0",
2121
"express-session": "^1.17.1",
22-
"mongoose": "^5.9.21"
22+
"mongoose": "^5.9.21",
23+
"passport": "^0.4.1",
24+
"passport-local": "^1.0.0"
2325
}
2426
}

routes/index.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const express = require('express');
22
const router = express.Router();
3+
const {ensureAuthenticated} = require('../config/auth')
34
//login page
45
router.get('/', (req,res)=>{
56
res.render('welcome');
@@ -8,5 +9,9 @@ router.get('/', (req,res)=>{
89
router.get('/register', (req,res)=>{
910
res.render('register');
1011
})
11-
12+
router.get('/dashboard',ensureAuthenticated,(req,res)=>{
13+
res.render('dashboard',{
14+
user: req.user
15+
});
16+
})
1217
module.exports = router;

routes/users.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ const express = require('express');
22
const router = express.Router();
33
const User = require("../models/user");
44
const bcrypt = require('bcrypt');
5+
const passport = require('passport');
56
//login handle
67
router.get('/login',(req,res)=>{
78
res.render('login');
@@ -10,8 +11,13 @@ router.get('/register',(req,res)=>{
1011
res.render('register')
1112
})
1213
//Register handle
13-
router.post('/login',(req,res)=>{
14-
})
14+
router.post('/login',(req,res,next)=>{
15+
passport.authenticate('local',{
16+
successRedirect : '/dashboard',
17+
failureRedirect: '/users/login',
18+
failureFlash : true
19+
})(req,res,next)
20+
})
1521
//register post handle
1622
router.post('/register',(req,res)=>{
1723
const {name,email, password, password2} = req.body;
@@ -73,5 +79,8 @@ router.post('/login',(req,res)=>{
7379
})
7480
//logout
7581
router.get('/logout',(req,res)=>{
76-
})
82+
req.logout();
83+
req.flash('success_msg','Now logged out');
84+
res.redirect('/users/login');
85+
})
7786
module.exports = router;

views/dashboard.ejs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<h1>Dashboard</h1>
2-
<p> Welcome User</p>
2+
<p> Welcome <%= user.name %></p>
33
<a href="/users/logout">Logout</a>

views/partials/messages.ejs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
<% } %>
66

77
<% if(success_msg!= '') { %>
8-
<p><%=success_msg %> </p>
8+
<p><%=success_msg %> </p>
9+
<% } %>
10+
11+
<% if(error_msg != '') { %>
12+
<p><%= error_msg %></p>
913
<% } %>
10-
14+
<% if(error != '') { %>
15+
<p><%= error %> </p>
16+
<% } %>

0 commit comments

Comments
 (0)