@@ -106,7 +106,8 @@ passport.use(
106106 clientSecret : process . env . GITHUB_SECRET ,
107107 callbackURL : '/auth/github/callback' ,
108108 passReqToCallback : true ,
109- scope : [ 'user:email' ]
109+ scope : [ 'user:email' ] ,
110+ allRawEmails : true
110111 } ,
111112 ( req , accessToken , refreshToken , profile , done ) => {
112113 User . findOne ( { github : profile . id } , ( findByGithubErr , existingUser ) => {
@@ -132,8 +133,18 @@ passport.use(
132133 }
133134 req . user . save ( ( saveErr ) => done ( null , req . user ) ) ;
134135 } else {
135- User . findByEmail ( emails , ( findByEmailErr , existingEmailUser ) => {
136- if ( existingEmailUser ) {
136+ User . findAllByEmails ( emails , ( findByEmailErr , existingEmailUsers ) => {
137+ if ( existingEmailUsers . length ) {
138+ let existingEmailUser ;
139+ // Handle case where user has made multiple p5.js Editor accounts,
140+ // with emails that are connected to the same GitHub account
141+ if ( existingEmailUsers . length > 1 ) {
142+ existingEmailUser = existingEmailUsers . find (
143+ ( u ) => ( u . email = primaryEmail )
144+ ) ;
145+ } else {
146+ [ existingEmailUser ] = existingEmailUsers ;
147+ }
137148 existingEmailUser . email = existingEmailUser . email || primaryEmail ;
138149 existingEmailUser . github = profile . id ;
139150 existingEmailUser . username =
0 commit comments