forked from divyanshu-rawat/checkout-your-cart
-
Notifications
You must be signed in to change notification settings - Fork 0
/
auth.js
121 lines (94 loc) · 3.31 KB
/
auth.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
function setupAuth(User, app) {
var passport = require('passport');
var GoogleStrategy = require('passport-google-oauth20').Strategy;
// var FacebookStrategy = require('passport-facebook').Strategy;
// High level serialize/de-serialize configuration for passport
passport.serializeUser(function(user, done) {
done(null, user._id);
});
passport.deserializeUser(function(id, done) {
User.
findOne({ _id : id }).
exec(done);
});
//Google Specific
passport.use(new GoogleStrategy({
clientID: '297828468814-b2hs25j4gkv6fk4dg6o86qknnrcgcrgv.apps.googleusercontent.com',
clientSecret: 'S8Ubrggv-sSsVDRtFT-S5L_i',
callbackURL: "https://mymeanstackapplication.herokuapp.com/auth/google/callback?redirect=%2F%23%2F"
},
function(accessToken, refreshToken, profile, done) {
// if (!profile.emails || !profile.emails.length) {
// return done('No emails associated with this account!');
// }
console.log('profile',profile);
User.findOneAndUpdate({ 'data.oauth': profile.id },
{
$set: {
'profile.username': profile.displayName,
'profile.picture': profile.photos[0].value
}
},
{ 'new': true, upsert: true, runValidators: true }, function (err, user) {
return done(err, user);
});
}
));
// Facebook-specific
/*
passport.use(new FacebookStrategy(
{
clientID: '229655060826139',
clientSecret: '0c424c572097e22b9d715c8d507a643e',
callbackURL: 'https://mymeanstackapplication.herokuapp.com/auth/facebook/callback'
},
function(accessToken, refreshToken, profile, done) {
User.findOneAndUpdate(
{ 'data.oauth': profile.id },
{
$set: {
'profile.username': profile.displayName,
'profile.picture': 'http://graph.facebook.com/' +
profile.id.toString() + '/picture?type=large'
}
},
{ 'new': true, upsert: true, runValidators: true },
function(error, user) {
done(error, user);
});
}));
*/
// Express middlewares
app.use(require('express-session')({
secret: 'this is a secret'
}));
app.use(passport.initialize());
app.use(passport.session());
// Express routes for auth
// app.get('/auth/google',passport.authenticate('google', { scope: ['profile'] }));
// app.get('/auth/google/callback',
// passport.authenticate('google', { failureRedirect: '/login' }),
// function(req, res) {
// res.redirect('/');
// });
app.get('/auth/google',
function(req, res, next) {
var redirect = encodeURIComponent('/#/');
console.log(redirect);
passport.authenticate('google',
{
scope: ['profile'],
callbackURL: 'https://mymeanstackapplication.herokuapp.com/auth/google/callback?redirect=' + redirect
})(req, res, next);
});
app.get('/auth/google/callback',
function(req, res, next) {
var url = 'https://mymeanstackapplication.herokuapp.com/auth/google/callback?redirect=' +encodeURIComponent(req.query.redirect);
// var url = 'http://localhost:5000/auth/google/callback';
passport.authenticate('google', { callbackURL: url })(req, res, next);
},
function(req, res) {
res.redirect(req.query.redirect);
});
}
module.exports = setupAuth;