Mercurial > gemma
view pkg/controllers/routes.go @ 935:430d52c2f6ef
client: move layer isolines to be drawn at the top
* Move layer isolones to be drawn last (and thus being "on top")
so that the bottleneck (position) layer will not interfere that much
with the colours. It also allows to set a white background with high
opacity on the bottleneck polygon in order to get highly visible
isolines.
author | Bernhard Reiter <bernhard@intevation.de> |
---|---|
date | Mon, 08 Oct 2018 17:20:42 +0200 |
parents | 6902032757e4 |
children | 29c11f4bf9db |
line wrap: on
line source
package controllers import ( "net/http" "net/http/httputil" "github.com/gorilla/mux" "gemma.intevation.de/gemma/pkg/auth" "gemma.intevation.de/gemma/pkg/middleware" "gemma.intevation.de/gemma/pkg/models" ) func BindRoutes(m *mux.Router) { api := m.PathPrefix("/api").Subrouter() var ( sysAdmin = auth.EnsureRole("sys_admin") any = auth.EnsureRole("sys_admin", "waterway_admin", "waterway_user") ) // User management. api.Handle("/users", any(&JSONHandler{ Handle: listUsers, })).Methods(http.MethodGet) api.Handle("/users", sysAdmin(&JSONHandler{ Input: func() interface{} { return new(models.User) }, Handle: createUser, })).Methods(http.MethodPost) api.Handle("/users/{user}", any(&JSONHandler{ Handle: listUser, })).Methods(http.MethodGet) api.Handle("/users/{user}", any(&JSONHandler{ Input: func() interface{} { return new(models.User) }, Handle: updateUser, })).Methods(http.MethodPut) api.Handle("/users/{user}", sysAdmin(&JSONHandler{ Handle: deleteUser, })).Methods(http.MethodDelete) // System notifications api.Handle("/testmail/{user}", sysAdmin(&JSONHandler{ Handle: sendTestMail, })).Methods(http.MethodGet) // System Management api.Handle("/system/log/{service}/{file}", sysAdmin(&JSONHandler{ Handle: showSystemLog, NoConn: true, })).Methods(http.MethodGet) // System Settings api.Handle("/system/style/{feature}/{attr}", any(&JSONHandler{ Handle: getFeatureStyle, })).Methods(http.MethodGet) api.Handle("/system/style/{feature}/{attr}", any(&JSONHandler{ Input: func() interface{} { return new(models.Colour) }, Handle: setFeatureStyle, })).Methods(http.MethodPut) // Password resets. api.Handle("/users/passwordreset", &JSONHandler{ Input: func() interface{} { return new(models.PWResetUser) }, Handle: passwordResetRequest, NoConn: true, }).Methods(http.MethodPost) api.Handle("/users/passwordreset/{hash}", &JSONHandler{ Handle: passwordReset, NoConn: true, }).Methods(http.MethodGet) // External proxies. external := &httputil.ReverseProxy{ Director: proxyDirector(models.ExternalServices.Find), ModifyResponse: proxyModifyResponse("/api/external/"), } externalAuth := any(external) api.Handle("/external/{hash}/{url}", externalAuth). Methods( http.MethodGet, http.MethodPost, http.MethodPut, http.MethodDelete) api.Handle("/external/{entry}", externalAuth). Methods( http.MethodGet, http.MethodPost, http.MethodPut, http.MethodDelete) // Internal proxies. internal := &httputil.ReverseProxy{ Director: proxyDirector(models.InternalServices.Find), ModifyResponse: proxyModifyResponse("/api/internal/"), } internalAuth := any( middleware.ModifyQuery(internal, middleware.InjectUser)) api.Handle("/internal/{hash}/{url}", internalAuth). Methods( http.MethodGet, http.MethodPost, http.MethodPut, http.MethodDelete) api.Handle("/internal/{entry}", internalAuth). Methods( http.MethodGet, http.MethodPost, http.MethodPut, http.MethodDelete) api.Handle("/published", any(&JSONHandler{ Handle: published, NoConn: true, })).Methods(http.MethodGet) // Bottleneck selection api.Handle("/surveys/{bottleneck}", any(&JSONHandler{ Handle: listSurveys, })).Methods(http.MethodGet) // Cross sections api.Handle("/cross", any(&JSONHandler{ Input: func() interface{} { return new(models.CrossSectionInput) }, Handle: crossSection, })).Methods(http.MethodPost) // Feature search api.Handle("/search", any(&JSONHandler{ Input: func() interface{} { return new(models.SearchRequest) }, Handle: searchFeature, })).Methods(http.MethodPost) // Token handling: Login/Logout. api.HandleFunc("/login", login). Methods(http.MethodPost) api.Handle("/logout", auth.SessionMiddleware(http.HandlerFunc(logout))). Methods(http.MethodGet, http.MethodPost) api.Handle("/renew", auth.SessionMiddleware(http.HandlerFunc(renew))). Methods(http.MethodGet, http.MethodPost) }