Skip to content

Commit 21713bb

Browse files
committed
Basic authentication structure using 'passport'
1 parent 00b5885 commit 21713bb

File tree

3 files changed

+46
-6
lines changed

3 files changed

+46
-6
lines changed

app.js

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ var express = require('express')
77
, routes = require('./routes')
88
, user = require('./routes/user')
99
, http = require('http')
10-
, path = require('path');
10+
, path = require('path')
11+
, passport = require('passport')
12+
, LocalStrategy = require('passport-local').Strategy;
1113

1214
var app = express();
1315

@@ -17,8 +19,12 @@ app.configure(function(){
1719
app.set('view engine', 'jade');
1820
app.use(express.favicon());
1921
app.use(express.logger('dev'));
22+
app.use(express.cookieParser());
2023
app.use(express.bodyParser());
2124
app.use(express.methodOverride());
25+
app.use(express.session({secret: 'MySupperSecretSecret'}));
26+
app.use(passport.initialize());
27+
app.use(passport.session());
2228
app.use(app.router);
2329
app.use(express.static(path.join(__dirname, 'public')));
2430
});
@@ -27,9 +33,37 @@ app.configure('development', function(){
2733
app.use(express.errorHandler());
2834
});
2935

36+
// to use persistent login session
37+
passport.serializeUser(function(user, done) {
38+
console.log('serialize ', user);
39+
done(null, user);
40+
});
41+
42+
passport.deserializeUser(function(id, done) {
43+
console.log('deserialize ', id);
44+
done(null, id);
45+
});
46+
47+
// TODO: change to use passport-facebook
48+
// https://github.com/jaredhanson/passport-facebook
49+
passport.use(new LocalStrategy(
50+
function(username, password, done) {
51+
// Find the user from your DB (MongoDB, CouchDB, other...)
52+
console.log('login with ', username, password);
53+
done(null, username);
54+
}
55+
));
56+
3057
app.get('/', routes.index);
3158
app.get('/users', user.list);
3259

60+
app.get('/auth',
61+
passport.authenticate('local', {failureRedirect: '/login'}),
62+
function(req, res) {
63+
res.redirect('/');
64+
}
65+
);
66+
3367
http.createServer(app).listen(app.get('port'), function(){
3468
console.log("Express server listening on port " + app.get('port'));
3569
});

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
},
88
"dependencies": {
99
"express": "3.0.0rc4",
10-
"jade": "*"
10+
"jade": "*",
11+
"passport": "*",
12+
"passport-local": "*"
1113
}
12-
}
14+
}

routes/index.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
* GET home page.
44
*/
55

6-
exports.index = function(req, res){
7-
res.render('index', { title: 'Express' });
8-
};
6+
exports.index = function(req, res) {
7+
if (!req.user) {
8+
res.render('index', { title: 'Express' });
9+
} else {
10+
res.render('index', { title: 'Hello ' + req.user });
11+
}
12+
};

0 commit comments

Comments
 (0)