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.
48 lines
1.7 KiB
Go
48 lines
1.7 KiB
Go
package router
|
|
|
|
import (
|
|
"bookhoard/internal/handlers"
|
|
|
|
"github.com/labstack/echo/v5"
|
|
)
|
|
|
|
func registerAuthRoutes(cfg *Config, rateLimitMiddleware echo.MiddlewareFunc) {
|
|
e := cfg.Echo
|
|
|
|
// Auth routes (no auth required, but rate limited)
|
|
e.POST("/api/auth/register", rateLimitMiddleware(cfg.AuthHandler.Register))
|
|
e.POST("/api/auth/login", rateLimitMiddleware(cfg.AuthHandler.Login))
|
|
|
|
// JWT middleware for protected routes
|
|
jwtMiddleware := createJWTMiddleware(cfg)
|
|
|
|
// Create protected route group
|
|
protected := e.Group("/api", jwtMiddleware)
|
|
|
|
// Protected auth routes
|
|
protected.GET("/auth/profile", cfg.AuthHandler.GetProfile)
|
|
|
|
// Refresh token endpoint (no authentication required - uses refresh token from body)
|
|
e.POST("/api/auth/refresh", cfg.AuthHandler.RefreshAccessToken)
|
|
|
|
// Logout endpoint (optional authentication - can revoke tokens if provided)
|
|
e.POST("/api/auth/logout", cfg.AuthHandler.Logout)
|
|
|
|
// Auth update routes
|
|
authGroup := e.Group("/api/auth", createJWTMiddleware(cfg))
|
|
authGroup.PUT("/password", cfg.AuthHandler.UpdatePassword)
|
|
authGroup.PUT("/theme", cfg.AuthHandler.UpdateTheme)
|
|
|
|
// Profile management (combined handlers - self-edit)
|
|
authGroup.PUT("/profile", cfg.AuthHandler.UpdateProfile)
|
|
authGroup.DELETE("/profile", cfg.AuthHandler.DeleteUser)
|
|
|
|
// Admin-only routes (same handlers with URL param)
|
|
admin := protected.Group("/auth", handlers.AdminMiddleware)
|
|
admin.GET("/users", cfg.AuthHandler.ListUsers)
|
|
admin.PUT("/users/:id/max-devices", cfg.AuthHandler.UpdateUserMaxDevices)
|
|
admin.PUT("/profile/:id", cfg.AuthHandler.UpdateProfile)
|
|
admin.PUT("/password/:id", cfg.AuthHandler.UpdatePassword)
|
|
admin.DELETE("/profile/:id", cfg.AuthHandler.DeleteUser)
|
|
}
|