refactor(oidc): simplify exchange method

This commit is contained in:
yusing 2025-04-22 16:49:12 +08:00
parent ef483403da
commit 077641beaa

View file

@ -182,13 +182,18 @@ func (auth *OIDCProvider) RedirectLoginPage(w http.ResponseWriter, r *http.Reque
http.Redirect(w, r, redirURL, http.StatusTemporaryRedirect) http.Redirect(w, r, redirURL, http.StatusTemporaryRedirect)
} }
func (auth *OIDCProvider) exchange(r *http.Request) (*oauth2.Token, error) { func (auth *OIDCProvider) cloneConfig() *oauth2.Config {
if auth.isMiddleware {
cfg := *auth.oauthConfig cfg := *auth.oauthConfig
return &cfg
}
func (auth *OIDCProvider) exchange(r *http.Request) (*oauth2.Token, error) {
var cfg *oauth2.Config
if auth.isMiddleware {
cfg = auth.cloneConfig()
cfg.RedirectURL = "https://" + r.Host + OIDCMiddlewareCallbackPath cfg.RedirectURL = "https://" + r.Host + OIDCMiddlewareCallbackPath
return cfg.Exchange(r.Context(), r.URL.Query().Get("code"))
} }
return auth.oauthConfig.Exchange(r.Context(), r.URL.Query().Get("code")) return cfg.Exchange(r.Context(), r.URL.Query().Get("code"))
} }
// OIDCCallbackHandler handles the OIDC callback. // OIDCCallbackHandler handles the OIDC callback.