Skip to content

Commit 6feefef

Browse files
authored
Merge pull request #201 from ahmedrowaihi/patch-1
🐛 FIX(github/email): fix github oauth scope & callback handler
2 parents 12c9716 + 68ec2ab commit 6feefef

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
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(

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import { github } from "~/lib/lucia";
44

55
export const GET = async () => {
66
const state = generateState();
7-
const url = await github.createAuthorizationURL(state);
7+
const url = await github.createAuthorizationURL(state, {
8+
scopes: ["user:email", "read:user"],
9+
});
810

911
cookies().set("github_oauth_state", state, {
1012
path: "/",

0 commit comments

Comments
 (0)