@@ -30,6 +30,14 @@ import (
3030)
3131
3232// OAuthCallbackHandler handles the OAuth callback for various oauth providers
33+ type AppleUserInfo struct {
34+ Email string `json:"email"`
35+ Name struct {
36+ FirstName string `json:"firstName"`
37+ LastName string `json:"lastName"`
38+ } `json:"name"`
39+ }
40+
3341func OAuthCallbackHandler () gin.HandlerFunc {
3442 return func (ctx * gin.Context ) {
3543 provider := ctx .Param ("oauth_provider" )
@@ -80,7 +88,10 @@ func OAuthCallbackHandler() gin.HandlerFunc {
8088 case constants .AuthRecipeMethodLinkedIn :
8189 user , err = processLinkedInUserInfo (ctx , oauthCode )
8290 case constants .AuthRecipeMethodApple :
83- user , err = processAppleUserInfo (ctx , oauthCode )
91+ user_ := AppleUserInfo {}
92+ userRaw := ctx .Request .FormValue ("user" )
93+ err = json .Unmarshal ([]byte (userRaw ), & user_ )
94+ user , err = processAppleUserInfo (ctx , oauthCode , & user_ )
8495 case constants .AuthRecipeMethodDiscord :
8596 user , err = processDiscordUserInfo (ctx , oauthCode )
8697 case constants .AuthRecipeMethodTwitter :
@@ -101,7 +112,13 @@ func OAuthCallbackHandler() gin.HandlerFunc {
101112 ctx .JSON (400 , gin.H {"error" : err .Error ()})
102113 return
103114 }
104-
115+ if user == nil {
116+ ctx .JSON (
117+ 500 ,
118+ gin.H {"error" : "Something Went Wrong. Please Try Again." },
119+ )
120+ return
121+ }
105122 existingUser , err := db .Provider .GetUserByEmail (ctx , refs .StringValue (user .Email ))
106123 log := log .WithField ("user" , user .Email )
107124 isSignUp := false
@@ -569,7 +586,7 @@ func processLinkedInUserInfo(ctx context.Context, code string) (*models.User, er
569586 return user , nil
570587}
571588
572- func processAppleUserInfo (ctx context.Context , code string ) (* models.User , error ) {
589+ func processAppleUserInfo (ctx context.Context , code string , user_ * AppleUserInfo ) (* models.User , error ) {
573590 var user = & models.User {}
574591 oauth2Token , err := oauth .OAuthProviders .AppleConfig .Exchange (ctx , code )
575592 if err != nil {
@@ -618,8 +635,10 @@ func processAppleUserInfo(ctx context.Context, code string) (*models.User, error
618635 user .FamilyName = & familyName
619636 }
620637 }
638+ user .GivenName = & user_ .Name .FirstName
639+ user .FamilyName = & user_ .Name .LastName
621640
622- return nil , err
641+ return user , err
623642}
624643
625644func processDiscordUserInfo (ctx context.Context , code string ) (* models.User , error ) {
0 commit comments