Files
bookhoard/internal/router/device.go
john-okeefe 5451e82b2d router: register SidecarHandler routes for system config and device sidecar
Phase 1: Register routes that were defined but never connected

- Add GET/PUT /api/system/config routes (admin-only) for system
  configuration in new internal/router/system.go
- Add GET /api/devices/:id/sidecar routes for device sidecar config
- Add SidecarHandler to router Config struct
- Instantiate SidecarHandler in main.go with config for fallback support

These routes were implemented in handlers/sidecar.go but never registered,
breaking the ability to configure base URLs for device sync.
2026-03-11 16:41:32 -04:00

34 lines
1.2 KiB
Go

package router
func registerDeviceRoutes(cfg *Config) {
e := cfg.Echo
// JWT middleware
jwtMiddleware := createJWTMiddleware(cfg)
// Protected routes
protected := e.Group("/api", jwtMiddleware)
devices := protected.Group("/devices")
// Public device registration routes (no auth required)
e.POST("/api/devices/register", cfg.DeviceHandler.InitiateRegistration)
e.POST("/api/devices/register/status", cfg.DeviceHandler.CheckRegistrationStatus)
// Device management routes (protected)
devices.GET("", cfg.DeviceHandler.ListDevices)
devices.GET("/:id", cfg.DeviceHandler.GetDevice)
devices.PUT("/:id", cfg.DeviceHandler.UpdateDevice)
devices.DELETE("/:id", cfg.DeviceHandler.DeleteDevice)
// Token regeneration endpoint (JWT authentication required)
devices.PUT("/:id/regenerate-token", cfg.DeviceHandler.RegenerateDeviceToken)
devices.GET("/pending", cfg.DeviceHandler.ListPendingRegistrations)
devices.GET("/approve/:registration_id", cfg.DeviceHandler.ApproveDevice)
devices.POST("/reject/:registration_id", cfg.DeviceHandler.RejectDevice)
// Device sidecar configuration routes
devices.GET("/:id/sidecar", cfg.SidecarHandler.GetSidecarConfig)
devices.GET("/:id/sidecar/download", cfg.SidecarHandler.DownloadSidecarConfig)
}