@@ -106,6 +106,11 @@ func (c Config) getAccessTokenCookieName() string {
106
106
return strs .Coalesce (c .AccessTokenCookieName , "token" )
107
107
}
108
108
109
+ const defaultLoginEndpoint = "/api/auth/login"
110
+ const defaultRefreshEndpoint = "/api/auth/refresh"
111
+ const defaultLogoutEndpoint = "/api/auth/logout"
112
+ const defaultRegisterEndpoint = "/api/auth/register"
113
+
109
114
func Setup (router * res.Router , config Config ) * AuthRouter {
110
115
loginPath := strs .Coalesce (config .LoginPath , defaultLoginEndpoint )
111
116
router .Post (loginPath , loginHandler (& config ))
@@ -134,11 +139,10 @@ func Setup(router *res.Router, config Config) *AuthRouter {
134
139
oauth .Setup (router , config .OAuth , sessionSetter )
135
140
}
136
141
137
- server := middleware (config )
142
+ server := newServer (config )
138
143
139
- router .Use (func (h http.Handler ) http.Handler {
140
- server .next = h
141
- return server
144
+ router .Use (func (handler http.Handler ) http.Handler {
145
+ return cloneServer (server , handler )
142
146
})
143
147
144
148
return & AuthRouter {
@@ -148,7 +152,14 @@ func Setup(router *res.Router, config Config) *AuthRouter {
148
152
}
149
153
}
150
154
151
- func middleware (config Config ) * server {
155
+ func cloneServer (src * server , next http.Handler ) * server {
156
+ clone := & server {}
157
+ * clone = * src
158
+ clone .next = next
159
+ return clone
160
+ }
161
+
162
+ func newServer (config Config ) * server {
152
163
153
164
if config .CredentialChecker == nil {
154
165
log .Fatal ("github.com/ntbosscher/gobase/auth/authhttp.Middleware(config): config requires CredentialChecker" )
@@ -163,18 +174,13 @@ func middleware(config Config) *server {
163
174
}
164
175
165
176
type server struct {
166
- next http.Handler
177
+ next http.Handler
167
178
perRequestFilter PerRequestFilter
168
179
ignoreRoutesWithPrefixes []string
169
180
ignoreRoutes []string
170
181
authHandler func (request * res.Request ) (res.Responder , context.Context )
171
182
}
172
183
173
- const defaultLoginEndpoint = "/api/auth/login"
174
- const defaultRefreshEndpoint = "/api/auth/refresh"
175
- const defaultLogoutEndpoint = "/api/auth/logout"
176
- const defaultRegisterEndpoint = "/api/auth/register"
177
-
178
184
func (s * server ) ServeHTTP (w http.ResponseWriter , r * http.Request ) {
179
185
180
186
ignoredRoute := false
0 commit comments