Files
soft_usite/rest/routes/portal.go
T
2026-05-16 21:05:05 -05:00

49 lines
2.3 KiB
Go

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)
// ─── 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)
// 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)
// 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)
}