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

Commit 22d0e7a

Browse files
committed
Spliting Strategies
1 parent 52dea2b commit 22d0e7a

File tree

5 files changed

+196
-0
lines changed

5 files changed

+196
-0
lines changed

config/strategies/facebook.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
'use strict';
2+
3+
var passport = require('passport'),
4+
FacebookStrategy = require('passport-facebook').Strategy,
5+
User = require('mongoose').model('User'),
6+
config = require('../config');
7+
8+
module.exports = function() {
9+
// Use facebook strategy
10+
passport.use(new FacebookStrategy({
11+
clientID: config.facebook.clientID,
12+
clientSecret: config.facebook.clientSecret,
13+
callbackURL: config.facebook.callbackURL,
14+
},
15+
function(accessToken, refreshToken, profile, done) {
16+
User.findOne({
17+
'providerData.id': profile.id
18+
}, function(err, user) {
19+
if (err) {
20+
return done(err);
21+
}
22+
if (!user) {
23+
user = new User({
24+
firstName: profile.name.givenName,
25+
lastName: profile.name.familyName,
26+
displayName: profile.displayName,
27+
email: profile.emails[0].value,
28+
username: profile.username,
29+
provider: 'facebook',
30+
providerData: profile._json
31+
});
32+
user.save(function(err) {
33+
if (err) console.log(err);
34+
return done(err, user);
35+
});
36+
} else {
37+
return done(err, user);
38+
}
39+
});
40+
}
41+
));
42+
};

config/strategies/google.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
'use strict';
2+
3+
var passport = require('passport'),
4+
GoogleStrategy = require('passport-google-oauth').OAuth2Strategy,
5+
User = require('mongoose').model('User'),
6+
config = require('../config');
7+
8+
module.exports = function() {
9+
// Use google strategy
10+
passport.use(new GoogleStrategy({
11+
clientID: config.google.clientID,
12+
clientSecret: config.google.clientSecret,
13+
callbackURL: config.google.callbackURL
14+
},
15+
function(accessToken, refreshToken, profile, done) {
16+
User.findOne({
17+
'providerData.id': profile.id
18+
}, function(err, user) {
19+
if (!user) {
20+
user = new User({
21+
firstName: profile.name.givenName,
22+
lastName: profile.name.familyName,
23+
displayName: profile.displayName,
24+
email: profile.emails[0].value,
25+
username: profile.username,
26+
provider: 'google',
27+
providerData: profile._json
28+
});
29+
user.save(function(err) {
30+
if (err) console.log(err);
31+
return done(err, user);
32+
});
33+
} else {
34+
return done(err, user);
35+
}
36+
});
37+
}
38+
));
39+
};

config/strategies/linkedin.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
'use strict';
2+
3+
var passport = require('passport'),
4+
LinkedInStrategy = require('passport-linkedin').Strategy,
5+
User = require('mongoose').model('User'),
6+
config = require('../config');
7+
8+
module.exports = function() {
9+
// Use linkedin strategy
10+
passport.use(new LinkedInStrategy({
11+
consumerKey: config.linkedin.clientID,
12+
consumerSecret: config.linkedin.clientSecret,
13+
callbackURL: config.linkedin.callbackURL,
14+
profileFields: ['id', 'first-name', 'last-name', 'email-address']
15+
},
16+
function(accessToken, refreshToken, profile, done) {
17+
User.findOne({
18+
'providerData.id': profile.id
19+
}, function(err, user) {
20+
if (!user) {
21+
user = new User({
22+
firstName: profile.name.givenName,
23+
lastName: profile.name.familyName,
24+
displayName: profile.displayName,
25+
email: profile.emails[0].value,
26+
username: profile.username,
27+
provider: 'linkedin',
28+
providerData: profile._json
29+
});
30+
user.save(function(err) {
31+
if (err) console.log(err);
32+
return done(err, user);
33+
});
34+
} else {
35+
return done(err, user);
36+
}
37+
});
38+
}
39+
));
40+
};

config/strategies/local.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
'use strict';
2+
3+
var passport = require('passport'),
4+
LocalStrategy = require('passport-local').Strategy,
5+
User = require('mongoose').model('User');
6+
7+
8+
module.exports = function() {
9+
// Use local strategy
10+
passport.use(new LocalStrategy({
11+
usernameField: 'email',
12+
passwordField: 'password'
13+
},
14+
function(email, password, done) {
15+
User.findOne({
16+
email: email
17+
}, function(err, user) {
18+
if (err) {
19+
return done(err);
20+
}
21+
if (!user) {
22+
return done(null, false, {
23+
message: 'Unknown user'
24+
});
25+
}
26+
if (!user.authenticate(password)) {
27+
return done(null, false, {
28+
message: 'Invalid password'
29+
});
30+
}
31+
return done(null, user);
32+
});
33+
}
34+
));
35+
};

config/strategies/twitter.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
'use strict';
2+
3+
var passport = require('passport'),
4+
TwitterStrategy = require('passport-twitter').Strategy,
5+
User = require('mongoose').model('User'),
6+
config = require('../config');
7+
8+
module.exports = function() {
9+
// Use twitter strategy
10+
passport.use(new TwitterStrategy({
11+
consumerKey: config.twitter.clientID,
12+
consumerSecret: config.twitter.clientSecret,
13+
callbackURL: config.twitter.callbackURL
14+
},
15+
function(token, tokenSecret, profile, done) {
16+
console.log(profile);
17+
User.findOne({
18+
'providerData.id_str': profile.id
19+
}, function(err, user) {
20+
if (err) {
21+
return done(err);
22+
}
23+
if (!user) {
24+
user = new User({
25+
displayName: profile.displayName,
26+
username: profile.username,
27+
provider: 'twitter',
28+
providerData: profile._json
29+
});
30+
user.save(function(err) {
31+
if (err) console.log(err);
32+
return done(err, user);
33+
});
34+
} else {
35+
return done(err, user);
36+
}
37+
});
38+
}
39+
));
40+
};

0 commit comments

Comments
 (0)