From 80121f2a366aa07e3309b5be84de4f8b3660f4c6 Mon Sep 17 00:00:00 2001 From: Stavros Date: Fri, 26 Dec 2025 18:55:08 +0200 Subject: [PATCH] fix: review comments --- internal/service/github_oauth_service.go | 6 +++--- internal/service/google_oauth_service.go | 21 ++++----------------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/internal/service/github_oauth_service.go b/internal/service/github_oauth_service.go index 7881ef2..35b552a 100644 --- a/internal/service/github_oauth_service.go +++ b/internal/service/github_oauth_service.go @@ -9,6 +9,7 @@ import ( "fmt" "io" "net/http" + "strconv" "time" "github.com/steveiliop56/tinyauth/internal/config" @@ -27,6 +28,7 @@ type GithubEmailResponse []struct { type GithubUserInfoResponse struct { Login string `json:"login"` Name string `json:"name"` + ID int `json:"id"` } type GithubOAuthService struct { @@ -172,9 +174,7 @@ func (github *GithubOAuthService) Userinfo() (config.Claims, error) { user.PreferredUsername = userInfo.Login user.Name = userInfo.Name - - // Github does not implement OIDC, so no sub is available - user.Sub = "not_available_dont_use_me" + user.Sub = strconv.Itoa(userInfo.ID) return user, nil } diff --git a/internal/service/google_oauth_service.go b/internal/service/google_oauth_service.go index a845df5..6dfbeaf 100644 --- a/internal/service/google_oauth_service.go +++ b/internal/service/google_oauth_service.go @@ -17,13 +17,7 @@ import ( "golang.org/x/oauth2/endpoints" ) -var GoogleOAuthScopes = []string{"https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/userinfo.profile"} - -type GoogleUserInfoResponse struct { - Email string `json:"email"` - Name string `json:"name"` - Id string `json:"id"` -} +var GoogleOAuthScopes = []string{"openid", "email", "profile"} type GoogleOAuthService struct { config oauth2.Config @@ -92,7 +86,7 @@ func (google *GoogleOAuthService) Userinfo() (config.Claims, error) { client := google.config.Client(google.context, google.token) - res, err := client.Get("https://www.googleapis.com/userinfo/v2/me") + res, err := client.Get("https://openidconnect.googleapis.com/v1/userinfo") if err != nil { return config.Claims{}, err } @@ -107,19 +101,12 @@ func (google *GoogleOAuthService) Userinfo() (config.Claims, error) { return config.Claims{}, err } - var userInfo GoogleUserInfoResponse - - err = json.Unmarshal(body, &userInfo) + err = json.Unmarshal(body, &user) if err != nil { return config.Claims{}, err } - user.PreferredUsername = strings.Split(userInfo.Email, "@")[0] - user.Name = userInfo.Name - user.Email = userInfo.Email - - // We can use the id as the sub - user.Sub = userInfo.Id + user.PreferredUsername = strings.SplitN(user.Email, "@", 2)[0] return user, nil }