From 301e5d9f27165fa824a732359352a2c73f1fe0dd 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) (cherry picked from commit 5e2167cd03efc7af5782abb4fcfa009345a550e3) (cherry picked from commit e676d7b265d0784241c498645dcd7b6127071024) (cherry picked from commit 9cd258e8658af36f7149249e81a8923284c4802f) (cherry picked from commit 0a8d58c1592d0677819977bba4f08cad6a178865) (cherry picked from commit b66d06823a5634ab355e95c6171749c9bac93878) (cherry picked from commit 4fbe2a0047c2b78b5a329664f6c9442576d65bbf) (cherry picked from commit a225e0c9b419ed32f35699630af0d7b97e6a3395) (cherry picked from commit 21b670b9273353ec233c2840282b168150c0dc99) (cherry picked from commit d586e335d51dd447cc76b42dac8ddacbf99feb73) (cherry picked from commit 7ab21549a3014aa7f9ab55d6a9f35a8b1ca551b8) (cherry picked from commit eb3235039fb82785f67200822f192a42fa44bb00) (cherry picked from commit 02b16875cf5b2d494b6a7deb440528a4ed202b05) (cherry picked from commit 130a1617aafa8e30781c1c3a0b1b7cf06228f29e) (cherry picked from commit e9ddf75e6bca922436b145e253d756b3774c0bab) (cherry picked from commit ea3c79817f3836256571d4e92073239f7cf44c2e) --- 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 a4dcfcafc7..2acccc5624 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 }