Update all handler functions to use *echo.Context (pointer) instead of echo.Context (value) as required by Echo v5. Changes across all handler files: - analytics.go: Update handler signatures - auth.go: Update authentication handler signatures - book_matching.go: Update matching handler signatures - collections.go: Update collection handler signatures - collections_preview_test.go: Update test signatures - commonhandlers.go: Update common handler signatures - conflicts.go: Update conflict handler signatures - context.go: Update context handler signatures - dashboard.go: Update dashboard handler signatures - devices.go: Update device handler signatures - jobs.go: Update job handler signatures - kobo.go: Update Kobo handler signatures - koreader.go: Update Koreader handler signatures - library.go: Update library handler signatures - matching.go: Update matching handler signatures - media.go: Update media handler signatures - opds.go: Update OPDS handler signatures - progress.go: Update progress handler signatures - queue.go: Update queue handler signatures - refresh_token.go: Update token handler signatures - scanner.go: Update scanner handler signatures - sidecar.go: Update sidecar handler signatures - sync.go: Update sync handler signatures - system_settings.go: Update settings handler signatures - websocket.go: Update WebSocket handler signatures All handlers now properly implement Echo v5's pointer-based context pattern. This change is necessary for type safety and compatibility with Echo v5's improved context handling and WebSocket support.
30 lines
926 B
Go
30 lines
926 B
Go
package handlers
|
|
|
|
import (
|
|
"bookhoard/internal/database"
|
|
"net/http"
|
|
|
|
"github.com/labstack/echo/v5"
|
|
)
|
|
|
|
// GetAuthenticatedUser safely retrieves the authenticated user from context
|
|
// Returns an error if the user is not found in context or type assertion fails
|
|
func GetAuthenticatedUser(c *echo.Context) (database.Users, error) {
|
|
user, ok := c.Get("user").(database.Users)
|
|
if !ok {
|
|
return database.Users{}, echo.NewHTTPError(http.StatusInternalServerError, "authentication context error")
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
// MustGetAuthenticatedUser gets user or panics
|
|
// Only use this after authentication middleware has verified the user
|
|
// Panicking here indicates a serious bug in the middleware chain
|
|
func MustGetAuthenticatedUser(c *echo.Context) database.Users {
|
|
user, err := GetAuthenticatedUser(c)
|
|
if err != nil {
|
|
panic(err) // Should never happen if authentication middleware is working correctly
|
|
}
|
|
return user
|
|
}
|