1
1
'use strict' ;
2
2
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' ) ;
13
7
14
8
module . exports = function ( ) {
15
9
// Serialize sessions
16
10
passport . serializeUser ( function ( user , done ) {
17
11
done ( null , user . id ) ;
18
12
} ) ;
19
13
14
+ // Deserialize sessions
20
15
passport . deserializeUser ( function ( id , done ) {
21
16
User . findOne ( {
22
17
_id : id
@@ -25,159 +20,8 @@ module.exports = function() {
25
20
} ) ;
26
21
} ) ;
27
22
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' , / ( .* ) \. ( j s $ | c o f f e e $ ) / ) . forEach ( function ( strategyPath ) {
25
+ require ( path . resolve ( strategyPath ) ) ;
26
+ } ) ;
183
27
} ;
0 commit comments