From 5e2167cd03efc7af5782abb4fcfa009345a550e3 Mon Sep 17 00:00:00 2001 From: Earl Warren Date: Tue, 27 Jun 2023 10:38:30 +0200 Subject: [PATCH] [TESTS] oauth2: make it possible to use an alternate http.Client (cherry picked from commit aea4ab25a93642b9032544e82299ef652162a092) (cherry picked from commit d386b212c48d0b1c8b50f947f11f08a0ad8c6d63) (cherry picked from commit c4935f08adc2830747905fdd051c551a7e3a0434) (cherry picked from commit dc6ca7cd25d82039a89c6b0d34cb1cfe80d186e9) (cherry picked from commit 25296d5a3cc48b8a6b3517a8e085f30208f681c8) (cherry picked from commit 3d54c64c5f7793e70201ed8b1d636aff2160682e) (cherry picked from commit 6ece0b9d0144b85ef3e3c5814e56f3d87cacf4cc) (cherry picked from commit 3b39962033fe87494f2318e4db89dd47182ccaef) --- services/auth/source/oauth2/http.go | 10 +++++++ .../auth/source/oauth2/providers_custom.go | 26 ++++++++++++++----- .../auth/source/oauth2/providers_openid.go | 1 + 3 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 services/auth/source/oauth2/http.go diff --git a/services/auth/source/oauth2/http.go b/services/auth/source/oauth2/http.go new file mode 100644 index 0000000000..1ee52412ae --- /dev/null +++ b/services/auth/source/oauth2/http.go @@ -0,0 +1,10 @@ +// SPDX-FileCopyrightText: Copyright the Forgejo contributors +// SPDX-License-Identifier: MIT + +package oauth2 + +import ( + "net/http" +) + +var HTTPClient *http.Client diff --git a/services/auth/source/oauth2/providers_custom.go b/services/auth/source/oauth2/providers_custom.go index 65cf538ad7..41570b699e 100644 --- a/services/auth/source/oauth2/providers_custom.go +++ b/services/auth/source/oauth2/providers_custom.go @@ -63,7 +63,9 @@ func init() { if setting.OAuth2Client.EnableAutoRegistration { scopes = append(scopes, "user:email") } - return github.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, custom.EmailURL, scopes...), nil + provider := github.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, custom.EmailURL, scopes...) + provider.HTTPClient = HTTPClient + return provider, nil })) RegisterGothProvider(NewCustomProvider( @@ -73,7 +75,9 @@ func init() { ProfileURL: availableAttribute(gitlab.ProfileURL), }, func(clientID, secret, callbackURL string, custom *CustomURLMapping, scopes []string) (goth.Provider, error) { scopes = append(scopes, "read_user") - return gitlab.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...), nil + provider := gitlab.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...) + provider.HTTPClient = HTTPClient + return provider, nil })) RegisterGothProvider(NewCustomProvider( @@ -83,7 +87,9 @@ func init() { ProfileURL: requiredAttribute(gitea.ProfileURL), }, func(clientID, secret, callbackURL string, custom *CustomURLMapping, scopes []string) (goth.Provider, error) { - return gitea.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...), nil + provider := gitea.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...) + provider.HTTPClient = HTTPClient + return provider, nil })) RegisterGothProvider(NewCustomProvider( @@ -93,7 +99,9 @@ func init() { ProfileURL: requiredAttribute(nextcloud.ProfileURL), }, func(clientID, secret, callbackURL string, custom *CustomURLMapping, scopes []string) (goth.Provider, error) { - return nextcloud.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...), nil + provider := nextcloud.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, custom.TokenURL, custom.ProfileURL, scopes...) + provider.HTTPClient = HTTPClient + return provider, nil })) RegisterGothProvider(NewCustomProvider( @@ -101,7 +109,9 @@ func init() { AuthURL: requiredAttribute(mastodon.InstanceURL), }, func(clientID, secret, callbackURL string, custom *CustomURLMapping, scopes []string) (goth.Provider, error) { - return mastodon.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, scopes...), nil + provider := mastodon.NewCustomisedURL(clientID, secret, callbackURL, custom.AuthURL, scopes...) + provider.HTTPClient = HTTPClient + return provider, nil })) RegisterGothProvider(NewCustomProvider( @@ -114,10 +124,12 @@ func init() { azureScopes[i] = azureadv2.ScopeType(scope) } - return azureadv2.New(clientID, secret, callbackURL, azureadv2.ProviderOptions{ + provider := azureadv2.New(clientID, secret, callbackURL, azureadv2.ProviderOptions{ Tenant: azureadv2.TenantType(custom.Tenant), Scopes: azureScopes, - }), nil + }) + provider.HTTPClient = HTTPClient + return provider, nil }, )) } diff --git a/services/auth/source/oauth2/providers_openid.go b/services/auth/source/oauth2/providers_openid.go index 54530ae8a8..5f7ac15828 100644 --- a/services/auth/source/oauth2/providers_openid.go +++ b/services/auth/source/oauth2/providers_openid.go @@ -43,6 +43,7 @@ func (o *OpenIDProvider) CreateGothProvider(providerName, callbackURL string, so if err != nil { log.Warn("Failed to create OpenID Connect Provider with name '%s' with url '%s': %v", providerName, source.OpenIDConnectAutoDiscoveryURL, err) } + provider.HTTPClient = HTTPClient return provider, err }