diff --git a/internal/router/router.go b/internal/router/router.go index 85cae2d..e98a5b5 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -52,13 +52,15 @@ type Config struct { QueueProcessor *sync.SyncQueueProcessor DeviceAuthMiddleware *middleware.DeviceAuthMiddleware LoginTracker *ratelimit.LoginAttemptTracker + ScannerHandler *handlers.Handler } // createJWTMiddleware creates a JWT middleware with proper user context setup func createJWTMiddleware(cfg *Config) echo.MiddlewareFunc { return echojwt.WithConfig(echojwt.Config{ - SigningKey: []byte(cfg.Cfg.JWTSecret), - ContextKey: "user", + SigningKey: []byte(cfg.Cfg.JWTSecret), + ContextKey: "user", + TokenLookup: "cookie:token,header:Authorization", SuccessHandler: func(c echo.Context) { token := c.Get("user").(*jwt.Token) claims := token.Claims.(jwt.MapClaims) @@ -118,6 +120,10 @@ func RegisterRoutes(cfg *Config) *handlers.Handler { jwtMiddleware := createJWTMiddleware(cfg) protected := e.Group("/api", jwtMiddleware) + // Create scanner handler for scanner routes and progress routes + scannerHandler := handlers.SetupRoutes(protected, cfg.Queries, cfg.ConnManager, cfg.QueueProcessor) + cfg.ScannerHandler = scannerHandler + // Register route groups registerAuthRoutes(cfg, rateLimitMiddleware) registerLibraryRoutes(cfg) @@ -136,9 +142,6 @@ func RegisterRoutes(cfg *Config) *handlers.Handler { registerDocumentationRoutes(cfg) e.Static("/static", "web/static") - // Create scanner handler for scanner routes and progress routes - scannerHandler := handlers.SetupRoutes(protected, cfg.Queries, cfg.ConnManager, cfg.QueueProcessor) - // Start background tasks (queue processor and connection cleanup) scannerHandler.StartBackgroundTasks()