Skip to content

Commit 68ec2ab

Browse files
committed
🐛 FIX(OAuth/Github): fix callback to get private emails
1 parent 041dc5c commit 68ec2ab

File tree

1 file changed

+23
-1
lines changed
  • src/app/api/auth/login/github/callback

1 file changed

+23
-1
lines changed

src/app/api/auth/login/github/callback/route.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,26 @@ export const GET = async (request: NextRequest) => {
2424
},
2525
});
2626
const githubUser: GitHubUser = await githubUserResponse.json();
27+
if (!githubUser.email) {
28+
const githubEmailsResponse = await fetch(
29+
"https://api.github.com/user/emails",
30+
{
31+
headers: {
32+
Authorization: `Bearer ${tokens.accessToken}`,
33+
},
34+
}
35+
);
36+
const githubEmails: {
37+
email: string;
38+
primary: boolean;
39+
verified: boolean;
40+
}[] = await githubEmailsResponse.json();
41+
const verifiedEmail = githubEmails.find(
42+
(email) => email.primary && email.verified
43+
);
44+
if (verifiedEmail) githubUser.email = verifiedEmail.email;
45+
}
46+
2747
const existingUser = await db.user.findUnique({
2848
where: {
2949
githubId: githubUser.id,
@@ -52,9 +72,11 @@ export const GET = async (request: NextRequest) => {
5272
name: githubUser.name,
5373
email: githubUser.email,
5474
picture: githubUser.avatar_url,
75+
emailVerified: Boolean(githubUser.email),
5576
},
5677
});
57-
sendWelcomeEmail({ toMail: newUser.email!, userName: newUser.name! });
78+
if (githubUser.email)
79+
sendWelcomeEmail({ toMail: newUser.email!, userName: newUser.name! });
5880
const session = await lucia.createSession(newUser.id, {});
5981
const sessionCookie = lucia.createSessionCookie(session.id);
6082
cookies().set(

0 commit comments

Comments
 (0)