feat: google oauth

This commit is contained in:
Stavros
2025-01-24 16:29:21 +02:00
parent 433e71bd50
commit d4eca52b12
4 changed files with 88 additions and 29 deletions

View File

@@ -1,6 +1,7 @@
package providers
import (
"fmt"
"tinyauth/internal/oauth"
"tinyauth/internal/types"
@@ -28,17 +29,31 @@ func (providers *Providers) Init() {
providers.Github = oauth.NewOAuth(oauth2.Config{
ClientID: providers.Config.GithubClientId,
ClientSecret: providers.Config.GithubClientSecret,
RedirectURL: fmt.Sprintf("%s/api/oauth/callback/github", providers.Config.AppURL),
Scopes: GithubScopes(),
Endpoint: endpoints.GitHub,
})
providers.Github.Init()
}
if providers.Config.GoogleClientId != "" && providers.Config.GoogleClientSecret != "" {
log.Info().Msg("Initializing Google OAuth")
providers.Google = oauth.NewOAuth(oauth2.Config{
ClientID: providers.Config.GoogleClientId,
ClientSecret: providers.Config.GoogleClientSecret,
RedirectURL: fmt.Sprintf("%s/api/oauth/callback/google", providers.Config.AppURL),
Scopes: GoogleScopes(),
Endpoint: endpoints.Google,
})
providers.Google.Init()
}
}
func (providers *Providers) GetProvider(provider string) *oauth.OAuth {
switch provider {
case "github":
return providers.Github
case "google":
return providers.Google
default:
return nil
}
@@ -56,6 +71,16 @@ func (providers *Providers) GetUser(provider string) (string, error) {
return "", emailErr
}
return email, nil
case "google":
if providers.Google == nil {
return "", nil
}
client := providers.Google.GetClient()
email, emailErr := GetGoogleEmail(client)
if emailErr != nil {
return "", emailErr
}
return email, nil
default:
return "", nil
}
@@ -66,5 +91,8 @@ func (provider *Providers) GetConfiguredProviders() []string {
if provider.Github != nil {
providers = append(providers, "github")
}
if provider.Google != nil {
providers = append(providers, "google")
}
return providers
}