git.iko.soy/typeable/oauth2-proxy
on master help sign in
Refactor makeLoginURL to accept extraParams

And don't require the caller to know how to use the returned params.

commit74918c40d8ba0975f84e101f5d39dc7378acdc51 authorAlexander Block <ablock84@gmail.com> dateTue 15 Sep 2020, 10:20 (6 years ago) parent4eb9612
4 files changed+17−11
providers/azure.go+3−3 providers/logingov.go+4−4 providers/provider_default.go+2−2 providers/util.go+8−2
providers/azure.go+3−3
@@ -212,10 +212,10 @@ func (p *AzureProvider) GetEmailAddress(ctx context.Context, s *sessions.Session
212212}
213213
214214func (p *AzureProvider) GetLoginURL(redirectURI, state string) string {
215− a, params := makeLoginURL(p.ProviderData, redirectURI, state)
215+ extraParams := url.Values{}
216216 if p.ProtectedResource != nil && p.ProtectedResource.String() != "" {
217− params.Add("resource", p.ProtectedResource.String())
217+ extraParams.Add("resource", p.ProtectedResource.String())
218218 }
219− a.RawQuery = params.Encode()
219+ a := makeLoginURL(p.ProviderData, redirectURI, state, extraParams)
220220 return a.String()
221221}
providers/logingov.go+4−4
@@ -225,12 +225,12 @@ func (p *LoginGovProvider) Redeem(ctx context.Context, redirectURL, code string)
225225
226226// GetLoginURL overrides GetLoginURL to add login.gov parameters
227227func (p *LoginGovProvider) GetLoginURL(redirectURI, state string) string {
228− a, params := makeLoginURL(p.ProviderData, redirectURI, state)
228+ extraParams := url.Values{}
229229 if p.AcrValues == "" {
230230 acr := "http://idmanagement.gov/ns/assurance/loa/1"
231− params.Add("acr_values", acr)
231+ extraParams.Add("acr_values", acr)
232232 }
233− params.Add("nonce", p.Nonce)
234− a.RawQuery = params.Encode()
233+ extraParams.Add("nonce", p.Nonce)
234+ a := makeLoginURL(p.ProviderData, redirectURI, state, extraParams)
235235 return a.String()
236236}
providers/provider_default.go+2−2
@@ -75,8 +75,8 @@ func (p *ProviderData) Redeem(ctx context.Context, redirectURL, code string) (s
7575
7676// GetLoginURL with typical oauth parameters
7777func (p *ProviderData) GetLoginURL(redirectURI, state string) string {
78− a, params := makeLoginURL(p, redirectURI, state)
79− a.RawQuery = params.Encode()
78+ extraParams := url.Values{}
79+ a := makeLoginURL(p, redirectURI, state, extraParams)
8080 return a.String()
8181}
8282
providers/util.go+8−2
@@ -31,7 +31,7 @@ func makeOIDCHeader(accessToken string) http.Header {
3131 return makeAuthorizationHeader(tokenTypeBearer, accessToken, extraHeaders)
3232}
3333
34−func makeLoginURL(p *ProviderData, redirectURI, state string) (url.URL, url.Values) {
34+func makeLoginURL(p *ProviderData, redirectURI, state string, extraParams url.Values) url.URL {
3535 a := *p.LoginURL
3636 params, _ := url.ParseQuery(a.RawQuery)
3737 params.Set("redirect_uri", redirectURI)
@@ -47,5 +47,11 @@ func makeLoginURL(p *ProviderData, redirectURI, state string) (url.URL, url.Valu
4747 params.Set("client_id", p.ClientID)
4848 params.Set("response_type", "code")
4949 params.Add("state", state)
50− return a, params
50+ for n, p := range extraParams {
51+ for _, v := range p {
52+ params.Add(n, v)
53+ }
54+ }
55+ a.RawQuery = params.Encode()
56+ return a
5157}