package routes import ( "github.com/gofiber/fiber/v2" "github.com/sujit-baniya/fiber-boilerplate/rest/controllers" "github.com/sujit-baniya/fiber-boilerplate/rest/middlewares" ) func PortalRoutes(app fiber.Router) { // ─── Rutas públicas ──────────────────────────────────────────────────────── app.Get("/portal/login", controllers.PortalLoginPage) app.Post("/portal/login", controllers.PortalLoginPost) app.Get("/portal/logout", controllers.PortalLogout) app.Get("/portal/forgot-password", controllers.PortalForgotPasswordPage) app.Post("/portal/forgot-password", controllers.PortalForgotPasswordPost) app.Get("/portal/reset-password", controllers.PortalResetPasswordPage) app.Post("/portal/reset-password", controllers.PortalResetPasswordPost) // ─── Rutas protegidas ────────────────────────────────────────────────────── portal := app.Group("/portal").Use(middlewares.PortalAuth()) portal.Get("/dashboard", controllers.PortalDashboard) portal.Get("/proyecto/:slug", controllers.PortalProyecto) // API JSON para Alpine.js portal.Get("/api/proyectos", controllers.PortalGetProyectos) portal.Get("/api/proyecto/:slug", controllers.PortalGetProyectoData) // Tickets portal.Post("/tickets", controllers.PortalCrearTicket) portal.Post("/tickets/:id/mensaje", controllers.PortalResponderTicket) portal.Post("/tickets/:id/leido", controllers.PortalMarcarTicketLeido) // Descargas portal.Get("/entregables/:id/download", controllers.PortalDownloadEntregable) portal.Get("/facturas/:id/download", controllers.PortalDownloadFactura) portal.Get("/documentos/:id/download", controllers.PortalDownloadDocumento) // Notificaciones in-app del portal user portal.Get("/mis-notifs", controllers.PortalGetMisNotifs) portal.Put("/mis-notifs/:id/leida", controllers.PortalMarcarNotifLeida) portal.Post("/mis-notifs/marcar-todas", controllers.PortalMarcarTodasLeidas) portal.Post("/mis-notifs/marcar-facturas", controllers.PortalMarcarFacturasLeidas) // Partner: recursos y comunicados (solo usuarios con rol partner) portal.Get("/partner-recursos", middlewares.PortalPartnerOnly(), controllers.PortalPartnerRecursos) portal.Get("/partner-recursos/:id/download", middlewares.PortalPartnerOnly(), controllers.PortalDownloadPartnerRecurso) portal.Get("/partner-comunicados/:id/download", middlewares.PortalPartnerOnly(), controllers.DownloadPartnerComunicadoArchivo) // Mi perfil portal.Get("/mi-perfil", controllers.PortalGetMiPerfil) portal.Put("/mi-perfil", controllers.PortalUpdateMiPerfil) portal.Put("/mi-perfil/password", controllers.PortalCambiarPassword) portal.Post("/mi-perfil/rut-file", controllers.PortalSubirRutDocumento) // Telegram: vinculación guiada portal.Post("/mi-perfil/telegram-init", controllers.PortalTelegramInit) portal.Get("/mi-perfil/telegram-status", controllers.PortalTelegramStatus) portal.Post("/mi-perfil/telegram-validar", controllers.PortalTelegramValidar) }