package route import ( "log" "forge.cadoles.com/wpetit/hydra-passwordless/internal/config" "forge.cadoles.com/wpetit/hydra-passwordless/oidc" "github.com/go-chi/chi" "github.com/gorilla/csrf" "github.com/pkg/errors" "gitlab.com/wpetit/goweb/session/gorilla" "gitlab.com/wpetit/goweb/static" ) func Mount(r *chi.Mux, config *config.Config) error { csrfSecret, err := gorilla.GenerateRandomBytes(32) if err != nil { return errors.Wrap(err, "could not generate CSRF secret") } csrfMiddleware := csrf.Protect( csrfSecret, csrf.Secure(false), ) r.Group(func(r chi.Router) { r.Use(csrfMiddleware) r.Get("/login", serveLoginPage) r.Post("/login", handleLoginForm) r.Get("/logout", serveLogoutPage) r.Get("/consent", serveConsentPage) }) if config.TestApp.Enabled { log.Println("test app enabled") r.Route("/test", func(r chi.Router) { r.Group(func(r chi.Router) { r.Use(oidc.Middleware) r.Get("/", serveTestAppHomePage) }) }) } notFoundHandler := r.NotFoundHandler() r.Get("/*", static.Dir(config.HTTP.PublicDir, "", notFoundHandler)) return nil }