refactor(router): update routes and middleware for Echo v5

Update all router files to use Echo v5 APIs and type signatures.

Changes in router.go:
- Replace echomiddleware.Logger() with RequestLogger() (line 144)
- Update import from echo/v4 to echo/v5

Changes in frontend.go:
- Update frontend handler signatures to use *echo.Context
- Fix middleware registration for v5 compatibility

Changes in auth.go, library.go, scanner.go, sync.go, helpers.go:
- Update handler function signatures to *echo.Context
- Ensure consistent type usage across all route handlers

All routes now properly implement Echo v5's middleware and handler patterns.
This commit is contained in:
2026-03-06 14:00:17 -05:00
parent 0438ec4625
commit 784326e2c4
7 changed files with 45 additions and 44 deletions
+10 -10
View File
@@ -21,9 +21,9 @@ import (
"github.com/golang-jwt/jwt/v5"
"github.com/google/uuid"
"github.com/jackc/pgx/v5/pgtype"
echojwt "github.com/labstack/echo-jwt/v4"
"github.com/labstack/echo/v4"
echomiddleware "github.com/labstack/echo/v4/middleware"
echojwt "github.com/labstack/echo-jwt/v5"
"github.com/labstack/echo/v5"
echomiddleware "github.com/labstack/echo/v5/middleware"
)
// CustomValidator wraps the go-playground validator
@@ -71,7 +71,7 @@ func createJWTMiddleware(cfg *Config) echo.MiddlewareFunc {
SigningKey: []byte(cfg.Cfg.JWTSecret),
ContextKey: "user",
TokenLookup: "cookie:token,header:Authorization:Bearer ",
SuccessHandler: func(c echo.Context) {
SuccessHandler: func(c *echo.Context) error {
token := c.Get("user").(*jwt.Token)
claims := token.Claims.(jwt.MapClaims)
c.Set("user_id", claims["user_id"])
@@ -83,8 +83,7 @@ func createJWTMiddleware(cfg *Config) echo.MiddlewareFunc {
userIDStr, _ := claims["user_id"].(string)
userUUID, err := uuid.Parse(userIDStr)
if err != nil {
c.Error(echo.NewHTTPError(http.StatusBadRequest, "invalid user ID in token"))
return
return echo.NewHTTPError(http.StatusBadRequest, "invalid user ID in token")
}
c.Set("user", database.Users{
@@ -93,8 +92,9 @@ func createJWTMiddleware(cfg *Config) echo.MiddlewareFunc {
Username: claims["user_username"].(string),
Role: claims["user_role"].(string),
})
return nil
},
ErrorHandler: func(c echo.Context, err error) error {
ErrorHandler: func(c *echo.Context, err error) error {
// Check if this is a page request (browser navigation)
if wantsHTML(c.Request().Header) {
// Page request → Redirect to login with message
@@ -114,7 +114,7 @@ func createJWTMiddleware(cfg *Config) echo.MiddlewareFunc {
// ensureUserExistsMiddleware checks if the authenticated user still exists in the database
func ensureUserExistsMiddleware(cfg *Config) echo.MiddlewareFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
return func(c *echo.Context) error {
userIDStr, ok := c.Get("user_id").(string)
if !ok {
return next(c)
@@ -184,7 +184,7 @@ func RegisterRoutes(cfg *Config) *handlers.Handler {
e.Validator = &CustomValidator{validator: v}
// Global middleware
e.Use(echomiddleware.Logger())
e.Use(echomiddleware.RequestLogger())
e.Use(echomiddleware.Recover())
e.Use(echomiddleware.CORS())
e.Use(ratelimit.RequestTracingMiddleware(cfg.Cfg))
@@ -227,7 +227,7 @@ func RegisterRoutes(cfg *Config) *handlers.Handler {
e.Static("/static", "web/static")
// Catch-all 404 handler - must be last
e.GET("/*", func(c echo.Context) error {
e.GET("/*", func(c *echo.Context) error {
var buf bytes.Buffer
err := templates.ErrorPage("Page not found", "404").Render(c.Request().Context(), &buf)
if err != nil {