package server import ( "net/http" "github.com/gorilla/sessions" "github.com/labstack/echo-contrib/session" "github.com/labstack/echo/v4" "github.com/rjNemo/rentease/internal/auth" "github.com/rjNemo/rentease/internal/view" ) const ( sessionName = "rentease" sessionAge = 86400 * 7 // 7 days ) func handleLoginPage() echo.HandlerFunc { return func(c echo.Context) error { return renderTempl(c, http.StatusOK, view.Login()) } } func handleLogin(as *auth.Service) echo.HandlerFunc { return func(c echo.Context) error { sess, err := session.Get(sessionName, c) if err != nil { return err } sess.Options = &sessions.Options{ Path: "/", MaxAge: sessionAge, HttpOnly: true, } if !as.Authenticate(c.FormValue("email"), c.FormValue("password")) { return c.Redirect(http.StatusTemporaryRedirect, routeLogin) } sess.Values["foo"] = "bar" if err := sess.Save(c.Request(), c.Response()); err != nil { return err } c.Response().Header().Add("HX-Redirect", "/bookings") return c.NoContent(200) } }