Skip to content

Commit 70f2de7

Browse files
authored
Merge pull request #459 from bete7512/apple_outh_fix
Apple outh fix
2 parents 9336d3e + a5e5d2e commit 70f2de7

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

server/handlers/oauth_callback.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
3341
func 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

625644
func processDiscordUserInfo(ctx context.Context, code string) (*models.User, error) {

0 commit comments

Comments
 (0)