80 lines
2.5 KiB
Go
80 lines
2.5 KiB
Go
package routes
|
|
|
|
import (
|
|
"git.ourworld.tf/herocode/heroagent/pkg/servers/ui/controllers"
|
|
"git.ourworld.tf/herocode/heroagent/pkg/servers/ui/models"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
// SetupRoutes configures the application's routes.
|
|
func SetupRoutes(app *fiber.App) {
|
|
// Initialize services and controllers
|
|
// For now, using the mock process manager
|
|
processManagerService := models.NewMockProcessManager()
|
|
jobManagerService := models.NewMockJobManager()
|
|
|
|
dashboardController := controllers.NewDashboardController()
|
|
processController := controllers.NewProcessController(processManagerService)
|
|
jobController := controllers.NewJobController(jobManagerService)
|
|
authController := controllers.NewAuthController()
|
|
|
|
// --- Public Routes ---
|
|
// Login and Logout
|
|
app.Get("/login", authController.ShowLoginPage)
|
|
app.Post("/login", authController.HandleLogin)
|
|
app.Get("/logout", authController.HandleLogout)
|
|
|
|
// --- Authenticated Routes ---
|
|
// TODO: Add middleware here to protect routes that require authentication.
|
|
// For example:
|
|
// authenticated := app.Group("/", authMiddleware) // Assuming authMiddleware is defined
|
|
// authenticated.Get("/", dashboardController.ShowDashboard)
|
|
// authenticated.Get("/processes", processController.ShowProcessManager)
|
|
// authenticated.Post("/processes/kill/:pid", processController.HandleKillProcess)
|
|
|
|
// For now, routes are public for development ease
|
|
app.Get("/", dashboardController.ShowDashboard)
|
|
|
|
// Process management routes
|
|
app.Get("/processes", processController.ShowProcessManager)
|
|
app.Post("/processes/kill/:pid", processController.HandleKillProcess)
|
|
|
|
// Job management routes
|
|
app.Get("/jobs", jobController.ShowJobsPage)
|
|
app.Get("/jobs/:id", jobController.ShowJobDetails)
|
|
|
|
// Debug routes
|
|
app.Get("/debug", func(c *fiber.Ctx) error {
|
|
// Get all data from the jobs page to debug
|
|
jobManagerService := models.NewMockJobManager()
|
|
jobs, _ := jobManagerService.GetAllJobs()
|
|
|
|
// Create debug data
|
|
debugData := fiber.Map{
|
|
"Title": "Debug Page",
|
|
"Jobs": jobs,
|
|
"TemplateData": fiber.Map{
|
|
"TotalJobs": len(jobs),
|
|
"ActiveJobs": 0,
|
|
"CompletedJobs": 0,
|
|
"ErrorJobs": 0,
|
|
},
|
|
}
|
|
|
|
// Return as JSON instead of rendering a template
|
|
return c.JSON(debugData)
|
|
})
|
|
}
|
|
|
|
// TODO: Implement authMiddleware
|
|
// func authMiddleware(c *fiber.Ctx) error {
|
|
// // Check for session/token
|
|
// // If not authenticated, redirect to /login
|
|
// // If authenticated, c.Next()
|
|
// // Example:
|
|
// // if c.Cookies("session_token") == "" {
|
|
// // return c.Redirect("/login")
|
|
// // }
|
|
// return c.Next()
|
|
// }
|