@@ -117,7 +117,8 @@ passport.use(
117117 clientSecret : process . env . GITHUB_SECRET ,
118118 callbackURL : '/auth/github/callback' ,
119119 passReqToCallback : true ,
120- scope : [ 'user:email' ]
120+ scope : [ 'user:email' ] ,
121+ allRawEmails : true
121122 } ,
122123 ( req , accessToken , refreshToken , profile , done ) => {
123124 User . findOne ( { github : profile . id } , ( findByGithubErr , existingUser ) => {
@@ -149,8 +150,18 @@ passport.use(
149150 }
150151 req . user . save ( ( saveErr ) => done ( null , req . user ) ) ;
151152 } 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+ }
154165 existingEmailUser . email = existingEmailUser . email || primaryEmail ;
155166 existingEmailUser . github = profile . id ;
156167 existingEmailUser . username =
0 commit comments