@@ -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 :
@@ -575,7 +586,7 @@ func processLinkedInUserInfo(ctx context.Context, code string) (*models.User, er
575586 return user , nil
576587}
577588
578- func processAppleUserInfo (ctx context.Context , code string ) (* models.User , error ) {
589+ func processAppleUserInfo (ctx context.Context , code string , user_ * AppleUserInfo ) (* models.User , error ) {
579590 var user = & models.User {}
580591 oauth2Token , err := oauth .OAuthProviders .AppleConfig .Exchange (ctx , code )
581592 if err != nil {
@@ -624,8 +635,10 @@ func processAppleUserInfo(ctx context.Context, code string) (*models.User, error
624635 user .FamilyName = & familyName
625636 }
626637 }
638+ user .GivenName = & user_ .Name .FirstName
639+ user .FamilyName = & user_ .Name .LastName
627640
628- return nil , err
641+ return user , err
629642}
630643
631644func processDiscordUserInfo (ctx context.Context , code string ) (* models.User , error ) {
0 commit comments