File tree 2 files changed +26
-2
lines changed
src/app/api/auth/login/github
2 files changed +26
-2
lines changed Original file line number Diff line number Diff line change @@ -24,6 +24,26 @@ export const GET = async (request: NextRequest) => {
24
24
} ,
25
25
} ) ;
26
26
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
+
27
47
const existingUser = await db . user . findUnique ( {
28
48
where : {
29
49
githubId : githubUser . id ,
@@ -52,9 +72,11 @@ export const GET = async (request: NextRequest) => {
52
72
name : githubUser . name ,
53
73
email : githubUser . email ,
54
74
picture : githubUser . avatar_url ,
75
+ emailVerified : Boolean ( githubUser . email ) ,
55
76
} ,
56
77
} ) ;
57
- sendWelcomeEmail ( { toMail : newUser . email ! , userName : newUser . name ! } ) ;
78
+ if ( githubUser . email )
79
+ sendWelcomeEmail ( { toMail : newUser . email ! , userName : newUser . name ! } ) ;
58
80
const session = await lucia . createSession ( newUser . id , { } ) ;
59
81
const sessionCookie = lucia . createSessionCookie ( session . id ) ;
60
82
cookies ( ) . set (
Original file line number Diff line number Diff line change @@ -4,7 +4,9 @@ import { github } from "~/lib/lucia";
4
4
5
5
export const GET = async ( ) => {
6
6
const state = generateState ( ) ;
7
- const url = await github . createAuthorizationURL ( state ) ;
7
+ const url = await github . createAuthorizationURL ( state , {
8
+ scopes : [ "user:email" , "read:user" ] ,
9
+ } ) ;
8
10
9
11
cookies ( ) . set ( "github_oauth_state" , state , {
10
12
path : "/" ,
You can’t perform that action at this time.
0 commit comments