package routes import ( "a301_server/internal/announcement" "a301_server/internal/auth" "a301_server/internal/download" "a301_server/pkg/middleware" "github.com/gofiber/fiber/v2" ) func Register( app *fiber.App, authH *auth.Handler, annH *announcement.Handler, dlH *download.Handler, ) { api := app.Group("/api") // Auth a := api.Group("/auth") a.Post("/register", authH.Register) a.Post("/login", authH.Login) a.Post("/logout", middleware.Auth, authH.Logout) // Users (admin only) u := api.Group("/users", middleware.Auth, middleware.AdminOnly) u.Get("/", authH.GetAllUsers) u.Patch("/:id/role", authH.UpdateRole) u.Delete("/:id", authH.DeleteUser) // Announcements ann := api.Group("/announcements") ann.Get("/", annH.GetAll) ann.Post("/", middleware.Auth, middleware.AdminOnly, annH.Create) ann.Put("/:id", middleware.Auth, middleware.AdminOnly, annH.Update) ann.Delete("/:id", middleware.Auth, middleware.AdminOnly, annH.Delete) // Download dl := api.Group("/download") dl.Get("/info", dlH.GetInfo) dl.Get("/file", dlH.ServeFile) dl.Post("/upload", middleware.Auth, middleware.AdminOnly, dlH.Upload) }