From 0eaa38d821366e84c03342043c26d2c311497e49 Mon Sep 17 00:00:00 2001 From: Kuldeep246 <122444111+Kuldeep246@users.noreply.github.com> Date: Thu, 22 Feb 2024 16:17:50 +0530 Subject: [PATCH 1/2] issue-#3044 Added passport handles expected errors as exceptions Added error messages in the third argument of the done callback instead of the first argument with Google and Github sign in features --- server/config/passport.js | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/server/config/passport.js b/server/config/passport.js index a6cbc5a508..ee72570f89 100644 --- a/server/config/passport.js +++ b/server/config/passport.js @@ -121,18 +121,16 @@ passport.use( }, (req, accessToken, refreshToken, profile, done) => { User.findOne({ github: profile.id }, (findByGithubErr, existingUser) => { - if (existingUser) { + if (existingUser) { if (req.user && req.user.email !== existingUser.email) { - done( - new Error('GitHub account is already linked to another account.') - ); + done(null, false, { msg: 'GitHub account is already linked to another account.' }); return; } else if (existingUser.banned) { - done(new Error(accountSuspensionMessage)); + done(null, false, { msg: accountSuspensionMessage }); return; } done(null, existingUser); - return; + return; } const emails = getVerifiedEmails(profile.emails); @@ -159,7 +157,7 @@ passport.use( [existingEmailUser] = existingEmailUsers; } if (existingEmailUser.banned) { - done(new Error(accountSuspensionMessage)); + done(null,false, {msg:accountSuspensionMessage}); return; } existingEmailUser.email = existingEmailUser.email || primaryEmail; @@ -218,14 +216,10 @@ passport.use( (findByGoogleErr, existingUser) => { if (existingUser) { if (req.user && req.user.email !== existingUser.email) { - done( - new Error( - 'Google account is already linked to another account.' - ) - ); + done(null,false,{msg:'Google account is already linked to another account.'}); return; } else if (existingUser.banned) { - done(new Error(accountSuspensionMessage)); + done(null,false,{msg:accountSuspensionMessage}); return; } done(null, existingUser); @@ -256,7 +250,7 @@ passport.use( // then, append a random friendly word? if (existingEmailUser) { if (existingEmailUser.banned) { - done(new Error(accountSuspensionMessage)); + done(null,false,{msg:accountSuspensionMessage}); return; } existingEmailUser.email = From d3f9a0ff188b647851c24f7146fa383eb38ccbf0 Mon Sep 17 00:00:00 2001 From: Kuldeep246 <122444111+Kuldeep246@users.noreply.github.com> Date: Sat, 24 Feb 2024 04:57:44 +0530 Subject: [PATCH 2/2] Formatting errors Update passport.js --- server/config/passport.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/server/config/passport.js b/server/config/passport.js index ee72570f89..d206238f08 100644 --- a/server/config/passport.js +++ b/server/config/passport.js @@ -13,6 +13,9 @@ import User from '../models/user'; const accountSuspensionMessage = 'Account has been suspended. Please contact privacy@p5js.org if you believe this is an error.'; +const accountLinkingErrorMessage = + 'Account is already linked to another account.'; + function generateUniqueUsername(username) { const adj = friendlyWords.predicates[ @@ -121,18 +124,17 @@ passport.use( }, (req, accessToken, refreshToken, profile, done) => { User.findOne({ github: profile.id }, (findByGithubErr, existingUser) => { - if (existingUser) { + if (existingUser) { if (req.user && req.user.email !== existingUser.email) { - done(null, false, { msg: 'GitHub account is already linked to another account.' }); + done(null, false, { msg: accountLinkingErrorMessage }); return; } else if (existingUser.banned) { done(null, false, { msg: accountSuspensionMessage }); return; } done(null, existingUser); - return; + return; } - const emails = getVerifiedEmails(profile.emails); const primaryEmail = getPrimaryEmail(profile.emails); @@ -157,7 +159,7 @@ passport.use( [existingEmailUser] = existingEmailUsers; } if (existingEmailUser.banned) { - done(null,false, {msg:accountSuspensionMessage}); + done(null, false, { msg: accountSuspensionMessage }); return; } existingEmailUser.email = existingEmailUser.email || primaryEmail; @@ -216,10 +218,10 @@ passport.use( (findByGoogleErr, existingUser) => { if (existingUser) { if (req.user && req.user.email !== existingUser.email) { - done(null,false,{msg:'Google account is already linked to another account.'}); + done(null, false, { msg: accountLinkingErrorMessage }); return; } else if (existingUser.banned) { - done(null,false,{msg:accountSuspensionMessage}); + done(null, false, { msg: accountSuspensionMessage }); return; } done(null, existingUser); @@ -250,7 +252,7 @@ passport.use( // then, append a random friendly word? if (existingEmailUser) { if (existingEmailUser.banned) { - done(null,false,{msg:accountSuspensionMessage}); + done(null, false, { msg: accountSuspensionMessage }); return; } existingEmailUser.email =