@@ -106,7 +106,8 @@ passport.use(
106
106
clientSecret : process . env . GITHUB_SECRET ,
107
107
callbackURL : '/auth/github/callback' ,
108
108
passReqToCallback : true ,
109
- scope : [ 'user:email' ]
109
+ scope : [ 'user:email' ] ,
110
+ allRawEmails : true
110
111
} ,
111
112
( req , accessToken , refreshToken , profile , done ) => {
112
113
User . findOne ( { github : profile . id } , ( findByGithubErr , existingUser ) => {
@@ -132,8 +133,18 @@ passport.use(
132
133
}
133
134
req . user . save ( ( saveErr ) => done ( null , req . user ) ) ;
134
135
} 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
+ }
137
148
existingEmailUser . email = existingEmailUser . email || primaryEmail ;
138
149
existingEmailUser . github = profile . id ;
139
150
existingEmailUser . username =
0 commit comments