Skip to content

Commit b58c946

Browse files
author
Donát Hajszter
committed
new parameter for setting the deletion of queryParamName from query
1 parent de1e244 commit b58c946

File tree

2 files changed

+42
-35
lines changed

2 files changed

+42
-35
lines changed

.traefik.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ testData:
1313
removeHeadersOnSuccess: true
1414
queryParam: true
1515
queryParamName: token
16+
removeQueryParamsOnSuccess: false
1617
pathSegment: true
1718
keys:
1819
- 83AB3503-50AA-4B57-9386-B9F0BADF2013

plugin.go

Lines changed: 41 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,18 @@ import (
1111
)
1212

1313
type Config struct {
14-
AuthenticationHeader bool `json:"authenticationHeader,omitempty"`
15-
AuthenticationHeaderName string `json:"headerName,omitempty"`
16-
BearerHeader bool `json:"bearerHeader,omitempty"`
17-
BearerHeaderName string `json:"bearerHeaderName,omitempty"`
18-
QueryParam bool `json:"queryParam,omitempty"`
19-
QueryParamName string `json:"queryParamName,omitempty"`
20-
PathSegment bool `json:"pathSegment,omitempty"`
21-
Keys []string `json:"keys,omitempty"`
22-
RemoveHeadersOnSuccess bool `json:"removeHeadersOnSuccess,omitempty"`
23-
InternalForwardHeaderName string `json:"internalForwardHeaderName,omitempty"`
24-
InternalErrorRoute string `json:"internalErrorRoute,omitempty"`
14+
AuthenticationHeader bool `json:"authenticationHeader,omitempty"`
15+
AuthenticationHeaderName string `json:"headerName,omitempty"`
16+
BearerHeader bool `json:"bearerHeader,omitempty"`
17+
BearerHeaderName string `json:"bearerHeaderName,omitempty"`
18+
QueryParam bool `json:"queryParam,omitempty"`
19+
QueryParamName string `json:"queryParamName,omitempty"`
20+
PathSegment bool `json:"pathSegment,omitempty"`
21+
removeQueryParamsOnSuccess bool `json:"removeQueryParamsOnSuccess,omitempty"`
22+
Keys []string `json:"keys,omitempty"`
23+
RemoveHeadersOnSuccess bool `json:"removeHeadersOnSuccess,omitempty"`
24+
InternalForwardHeaderName string `json:"internalForwardHeaderName,omitempty"`
25+
InternalErrorRoute string `json:"internalErrorRoute,omitempty"`
2526
}
2627

2728
type Response struct {
@@ -38,6 +39,7 @@ func CreateConfig() *Config {
3839
QueryParam: true,
3940
QueryParamName: "token",
4041
PathSegment: true,
42+
removeQueryParamsOnSuccess:false,
4143
Keys: make([]string, 0),
4244
RemoveHeadersOnSuccess: true,
4345
InternalForwardHeaderName: "",
@@ -46,18 +48,19 @@ func CreateConfig() *Config {
4648
}
4749

4850
type KeyAuth struct {
49-
next http.Handler
50-
authenticationHeader bool
51-
authenticationHeaderName string
52-
bearerHeader bool
53-
bearerHeaderName string
54-
queryParam bool
55-
queryParamName string
56-
pathSegment bool
57-
keys []string
58-
removeHeadersOnSuccess bool
59-
internalForwardHeaderName string
60-
internalErrorRoute string
51+
next http.Handler
52+
authenticationHeader bool
53+
authenticationHeaderName string
54+
bearerHeader bool
55+
bearerHeaderName string
56+
queryParam bool
57+
queryParamName string
58+
pathSegment bool
59+
removeQueryParamsOnSuccess bool
60+
keys []string
61+
removeHeadersOnSuccess bool
62+
internalForwardHeaderName string
63+
internalErrorRoute string
6164
}
6265

6366
func New(ctx context.Context, next http.Handler, config *Config, name string) (http.Handler, error) {
@@ -74,18 +77,19 @@ func New(ctx context.Context, next http.Handler, config *Config, name string) (h
7477
}
7578

7679
return &KeyAuth{
77-
next: next,
78-
authenticationHeader: config.AuthenticationHeader,
79-
authenticationHeaderName: config.AuthenticationHeaderName,
80-
bearerHeader: config.BearerHeader,
81-
bearerHeaderName: config.BearerHeaderName,
82-
queryParam: config.QueryParam,
83-
queryParamName: config.QueryParamName,
84-
pathSegment: config.PathSegment,
85-
keys: config.Keys,
86-
removeHeadersOnSuccess: config.RemoveHeadersOnSuccess,
87-
internalForwardHeaderName: config.InternalForwardHeaderName,
88-
internalErrorRoute: config.InternalErrorRoute,
80+
next: next,
81+
authenticationHeader: config.AuthenticationHeader,
82+
authenticationHeaderName: config.AuthenticationHeaderName,
83+
bearerHeader: config.BearerHeader,
84+
bearerHeaderName: config.BearerHeaderName,
85+
queryParam: config.QueryParam,
86+
queryParamName: config.QueryParamName,
87+
pathSegment: config.PathSegment,
88+
removeQueryParamsOnSuccess: config.removeQueryParamsOnSuccess
89+
keys: config.Keys,
90+
removeHeadersOnSuccess: config.RemoveHeadersOnSuccess,
91+
internalForwardHeaderName: config.InternalForwardHeaderName,
92+
internalErrorRoute: config.InternalErrorRoute,
8993
}, nil
9094
}
9195

@@ -166,7 +170,9 @@ func (ka *KeyAuth) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
166170
var qs = req.URL.Query()
167171
var matchedKey = contains(qs.Get(ka.queryParamName), ka.keys, true)
168172
if matchedKey != "" {
173+
if ka.removeQueryParamsOnSuccess{
169174
qs.Del(ka.queryParamName)
175+
}
170176
req.URL.RawQuery = qs.Encode()
171177
ka.ok(rw, req, matchedKey)
172178
return

0 commit comments

Comments
 (0)