Skip to content
This repository was archived by the owner on Aug 30, 2021. It is now read-only.

Commit 52dea2b

Browse files
committed
Spliting Strategies
1 parent 899b65d commit 52dea2b

File tree

2 files changed

+12
-168
lines changed

2 files changed

+12
-168
lines changed

config/passport.js

Lines changed: 9 additions & 165 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
11
'use strict';
22

3-
var mongoose = require('mongoose'),
4-
passport = require('passport'),
5-
LocalStrategy = require('passport-local').Strategy,
6-
TwitterStrategy = require('passport-twitter').Strategy,
7-
FacebookStrategy = require('passport-facebook').Strategy,
8-
GoogleStrategy = require('passport-google-oauth').OAuth2Strategy,
9-
LinkedInStrategy = require('passport-linkedin').Strategy,
10-
User = mongoose.model('User'),
11-
config = require('./config');
12-
3+
var passport = require('passport'),
4+
User = require('mongoose').model('User'),
5+
path = require('path'),
6+
utilities = require('./utilities');
137

148
module.exports = function() {
159
// Serialize sessions
1610
passport.serializeUser(function(user, done) {
1711
done(null, user.id);
1812
});
1913

14+
// Deserialize sessions
2015
passport.deserializeUser(function(id, done) {
2116
User.findOne({
2217
_id: id
@@ -25,159 +20,8 @@ module.exports = function() {
2520
});
2621
});
2722

28-
// Use local strategy
29-
passport.use(new LocalStrategy({
30-
usernameField: 'email',
31-
passwordField: 'password'
32-
},
33-
function(email, password, done) {
34-
User.findOne({
35-
email: email
36-
}, function(err, user) {
37-
if (err) {
38-
return done(err);
39-
}
40-
if (!user) {
41-
return done(null, false, {
42-
message: 'Unknown user'
43-
});
44-
}
45-
if (!user.authenticate(password)) {
46-
return done(null, false, {
47-
message: 'Invalid password'
48-
});
49-
}
50-
return done(null, user);
51-
});
52-
}
53-
));
54-
55-
// Use twitter strategy
56-
passport.use(new TwitterStrategy({
57-
consumerKey: config.twitter.clientID,
58-
consumerSecret: config.twitter.clientSecret,
59-
callbackURL: config.twitter.callbackURL
60-
},
61-
function(token, tokenSecret, profile, done) {
62-
console.log(profile);
63-
User.findOne({
64-
'providerData.id_str': profile.id
65-
}, function(err, user) {
66-
if (err) {
67-
return done(err);
68-
}
69-
if (!user) {
70-
user = new User({
71-
displayName: profile.displayName,
72-
username: profile.username,
73-
provider: 'twitter',
74-
providerData: profile._json
75-
});
76-
user.save(function(err) {
77-
if (err) console.log(err);
78-
return done(err, user);
79-
});
80-
} else {
81-
return done(err, user);
82-
}
83-
});
84-
}
85-
));
86-
87-
// Use facebook strategy
88-
passport.use(new FacebookStrategy({
89-
clientID: config.facebook.clientID,
90-
clientSecret: config.facebook.clientSecret,
91-
callbackURL: config.facebook.callbackURL,
92-
},
93-
function(accessToken, refreshToken, profile, done) {
94-
User.findOne({
95-
'providerData.id': profile.id
96-
}, function(err, user) {
97-
if (err) {
98-
return done(err);
99-
}
100-
if (!user) {
101-
user = new User({
102-
firstName: profile.name.givenName,
103-
lastName: profile.name.familyName,
104-
displayName: profile.displayName,
105-
email: profile.emails[0].value,
106-
username: profile.username,
107-
provider: 'facebook',
108-
providerData: profile._json
109-
});
110-
user.save(function(err) {
111-
if (err) console.log(err);
112-
return done(err, user);
113-
});
114-
} else {
115-
return done(err, user);
116-
}
117-
});
118-
}
119-
));
120-
121-
// Use google strategy
122-
passport.use(new GoogleStrategy({
123-
clientID: config.google.clientID,
124-
clientSecret: config.google.clientSecret,
125-
callbackURL: config.google.callbackURL
126-
},
127-
function(accessToken, refreshToken, profile, done) {
128-
User.findOne({
129-
'providerData.id': profile.id
130-
}, function(err, user) {
131-
if (!user) {
132-
user = new User({
133-
firstName: profile.name.givenName,
134-
lastName: profile.name.familyName,
135-
displayName: profile.displayName,
136-
email: profile.emails[0].value,
137-
username: profile.username,
138-
provider: 'google',
139-
providerData: profile._json
140-
});
141-
user.save(function(err) {
142-
if (err) console.log(err);
143-
return done(err, user);
144-
});
145-
} else {
146-
return done(err, user);
147-
}
148-
});
149-
}
150-
));
151-
152-
// Use linkedin strategy
153-
passport.use(new LinkedInStrategy({
154-
consumerKey: config.linkedin.clientID,
155-
consumerSecret: config.linkedin.clientSecret,
156-
callbackURL: config.linkedin.callbackURL,
157-
profileFields: ['id', 'first-name', 'last-name', 'email-address']
158-
},
159-
function(accessToken, refreshToken, profile, done) {
160-
User.findOne({
161-
'providerData.id': profile.id
162-
}, function(err, user) {
163-
if (!user) {
164-
user = new User({
165-
firstName: profile.name.givenName,
166-
lastName: profile.name.familyName,
167-
displayName: profile.displayName,
168-
email: profile.emails[0].value,
169-
username: profile.username,
170-
provider: 'linkedin',
171-
providerData: profile._json
172-
});
173-
user.save(function(err) {
174-
if (err) console.log(err);
175-
return done(err, user);
176-
});
177-
} else {
178-
return done(err, user);
179-
}
180-
});
181-
}
182-
));
23+
// Initialize strategies
24+
utilities.walk('./config/strategies', /(.*)\.(js$|coffee$)/).forEach(function(strategyPath) {
25+
require(path.resolve(strategyPath));
26+
});
18327
};

config/utilities.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
var fs = require('fs');
77

88
// Walk function to recursively get files
9-
var _walk = function(root, regex, exclude, removePath) {
9+
var _walk = function(root, includeRegex, excludeRegex, removePath) {
1010
var output = [];
1111
var directories = [];
1212

@@ -16,7 +16,7 @@ var _walk = function(root, regex, exclude, removePath) {
1616
var stat = fs.statSync(newPath);
1717

1818
if (stat.isFile()) {
19-
if (regex.test(file) && (!exclude || !exclude.test(file))) {
19+
if (includeRegex.test(file) && (!excludeRegex || !excludeRegex.test(file))) {
2020
output.push(newPath.replace(removePath, ''));
2121
}
2222
} else if (stat.isDirectory()) {
@@ -26,7 +26,7 @@ var _walk = function(root, regex, exclude, removePath) {
2626

2727
// Then recursively add directories
2828
directories.forEach(function(directory) {
29-
output = output.concat(_walk(directory, regex, exclude, removePath));
29+
output = output.concat(_walk(directory, includeRegex, excludeRegex, removePath));
3030
});
3131

3232
return output;

0 commit comments

Comments
 (0)