From 4c9bab0890cfbd426a3c6b92fc470800e6ea657f Mon Sep 17 00:00:00 2001 From: Joe Bowers Date: Thu, 24 Sep 2015 16:41:29 -0700 Subject: [PATCH] server: user management endpoints strictly conform to schema This change disables the URL fixing behavior or the router associated with the user management schema. After this commit, URLS routing to /api/$VERSION/users must target exactly the specified paths. In addition, `/api/$VERSION/users/` will serve a 404 This change allows users to hit the user create endpoint, which would previously serve a redirect rather than actually making the associated change. --- server/server.go | 2 +- server/user.go | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/server/server.go b/server/server.go index fc56ca12..3df0118c 100644 --- a/server/server.go +++ b/server/server.go @@ -244,7 +244,7 @@ func (s *Server) HTTPHandler() http.Handler { mux.Handle(path.Join(apiBasePath, clientPath), s.NewClientTokenAuthHandler(clientHandler)) usersAPI := usersapi.NewUsersAPI(s.UserManager, s.ClientIdentityRepo, s.UserEmailer, s.localConnectorID) - mux.Handle(path.Join(apiBasePath, UsersSubTree)+"/", NewUserMgmtServer(usersAPI, s.JWTVerifierFactory(), s.UserManager, s.ClientIdentityRepo).HTTPHandler()) + mux.Handle(path.Join(apiBasePath, UsersSubTree), NewUserMgmtServer(usersAPI, s.JWTVerifierFactory(), s.UserManager, s.ClientIdentityRepo).HTTPHandler()) return http.Handler(mux) } diff --git a/server/user.go b/server/user.go index 64ce05d0..0c5350d9 100644 --- a/server/user.go +++ b/server/user.go @@ -24,8 +24,8 @@ const ( var ( UsersSubTree = "/users" - UsersListEndpoint = addBasePath(UsersSubTree) + "/" - UsersCreateEndooint = addBasePath(UsersSubTree) + UsersListEndpoint = addBasePath(UsersSubTree) + UsersCreateEndpoint = addBasePath(UsersSubTree) UsersGetEndpoint = addBasePath(UsersSubTree + "/:id") ) @@ -47,8 +47,10 @@ func NewUserMgmtServer(userMgmtAPI *api.UsersAPI, jwtvFactory JWTVerifierFactory func (s *UserMgmtServer) HTTPHandler() http.Handler { r := httprouter.New() + r.RedirectTrailingSlash = false + r.RedirectFixedPath = false r.GET(UsersListEndpoint, s.listUsers) - r.POST(UsersCreateEndooint, s.createUser) + r.POST(UsersCreateEndpoint, s.createUser) r.GET(UsersGetEndpoint, s.getUser) return r }