@@ -117,7 +117,8 @@ passport.use(
117
117
clientSecret : process . env . GITHUB_SECRET ,
118
118
callbackURL : '/auth/github/callback' ,
119
119
passReqToCallback : true ,
120
- scope : [ 'user:email' ]
120
+ scope : [ 'user:email' ] ,
121
+ allRawEmails : true
121
122
} ,
122
123
( req , accessToken , refreshToken , profile , done ) => {
123
124
User . findOne ( { github : profile . id } , ( findByGithubErr , existingUser ) => {
@@ -149,8 +150,18 @@ passport.use(
149
150
}
150
151
req . user . save ( ( saveErr ) => done ( null , req . user ) ) ;
151
152
} else {
152
- User . findByEmail ( emails , ( findByEmailErr , existingEmailUser ) => {
153
- if ( existingEmailUser ) {
153
+ User . findAllByEmails ( emails , ( findByEmailErr , existingEmailUsers ) => {
154
+ if ( existingEmailUsers . length ) {
155
+ let existingEmailUser ;
156
+ // Handle case where user has made multiple p5.js Editor accounts,
157
+ // with emails that are connected to the same GitHub account
158
+ if ( existingEmailUsers . length > 1 ) {
159
+ existingEmailUser = existingEmailUsers . find (
160
+ ( u ) => ( u . email = primaryEmail )
161
+ ) ;
162
+ } else {
163
+ [ existingEmailUser ] = existingEmailUsers ;
164
+ }
154
165
existingEmailUser . email = existingEmailUser . email || primaryEmail ;
155
166
existingEmailUser . github = profile . id ;
156
167
existingEmailUser . username =
0 commit comments