package app import ( "net/http" "git.dotya.ml/mirre-mt/pcmt/handlers" modtmpl "git.dotya.ml/mirre-mt/pcmt/modules/template" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" ) func (a *App) SetupRoutes() { e := a.E() setting := a.setting assets := http.FileServer(a.getAssets()) tmpls := a.getTemplates() modtmpl.Init(setting, tmpls) // run this before declaring any handler funcs. handlers.InitHandlers(setting) e.Renderer = modtmpl.Renderer // keep /static/* as a compatibility fallback for /assets. e.GET( "/static/*", func(c echo.Context) error { return c.Redirect(http.StatusMovedPermanently, c.Request().URL.Path) }, middleware.Rewrite( map[string]string{"/static/*": "/assets/$1"}, ), ) // alternative: // e.GET("/static/*", echo.WrapHandler(http.StripPrefix("/static/", assets))) e.GET("/assets/*", echo.WrapHandler(http.StripPrefix("/assets/", assets))) e.GET("/", handlers.Index()) e.GET("/signin", handlers.Signin()) e.POST("/signin", handlers.SigninPost(a.db)) e.GET("/signup", handlers.Signup()) e.POST("/signup", handlers.SignupPost(a.db)) e.GET("/home", handlers.Home(a.db)) e.GET("/logout", handlers.Logout()) e.POST("/logout", handlers.Logout()) // administrative endpoints. e.GET("/admin/*", handlers.Admin()) }