change dashboard routes to admin from api

This commit is contained in:
Mazyar
2026-05-20 14:26:09 +03:30
parent 06ab5830e2
commit aa5e547d7b
3 changed files with 22 additions and 22 deletions
+2 -2
View File
@@ -249,8 +249,8 @@ func main() {
e := bootstrap.InitHTTPServer(conf, logger) e := bootstrap.InitHTTPServer(conf, logger)
// Register routes // Register routes
router.RegisterAdminRoutes(e, userHandler, companyHandler, customerHandler, tenderHandler, feedbackHandler, tenderApprovalHandler, inquiryHandler, categoryHandler, flagHandler, notificationHandler, contactHandler, cmsHandler, kanbanHandler, fileStoreHandler, xssPolicy) router.RegisterAdminRoutes(e, userHandler, companyHandler, customerHandler, tenderHandler, feedbackHandler, tenderApprovalHandler, inquiryHandler, categoryHandler, flagHandler, notificationHandler, contactHandler, cmsHandler, kanbanHandler, fileStoreHandler, dashboardHandler, xssPolicy)
router.RegisterPublicRoutes(e, customerHandler, tenderHandler, feedbackHandler, tenderApprovalHandler, companyHandler, inquiryHandler, categoryHandler, flagHandler, notificationHandler, contactHandler, cmsHandler, fileStoreHandler, dashboardHandler, userHandler, xssPolicy) router.RegisterPublicRoutes(e, customerHandler, tenderHandler, feedbackHandler, tenderApprovalHandler, companyHandler, inquiryHandler, categoryHandler, flagHandler, notificationHandler, contactHandler, cmsHandler, fileStoreHandler, xssPolicy)
router.RegisterDocumentScraperRoutes(e, documentScraperHandler, conf.DocumentScraper.APIKey) router.RegisterDocumentScraperRoutes(e, documentScraperHandler, conf.DocumentScraper.APIKey)
// Start server // Start server
+14 -14
View File
@@ -22,7 +22,7 @@ import (
"github.com/labstack/echo/v4" "github.com/labstack/echo/v4"
) )
func RegisterAdminRoutes(e *echo.Echo, userHandler *user.Handler, companyHandler *company.Handler, customerHandler *customer.Handler, tenderHandler *tender.TenderHandler, feedbackHandler *feedback.Handler, tenderApprovalHandler *tender_approval.Handler, inquiryHandler *inquiry.Handler, categoryHandler *company_category.Handler, flagHandler *assets.Handler, notificationHandler *notification.NotificationHandler, contactHandler *contact.Handler, cmsHandler *cms.Handler, kanbanHandler *kanban.Handler, fileStoreHandler *filestore.Handler, xssPolicy *security.XSSPolicy) { func RegisterAdminRoutes(e *echo.Echo, userHandler *user.Handler, companyHandler *company.Handler, customerHandler *customer.Handler, tenderHandler *tender.TenderHandler, feedbackHandler *feedback.Handler, tenderApprovalHandler *tender_approval.Handler, inquiryHandler *inquiry.Handler, categoryHandler *company_category.Handler, flagHandler *assets.Handler, notificationHandler *notification.NotificationHandler, contactHandler *contact.Handler, cmsHandler *cms.Handler, kanbanHandler *kanban.Handler, fileStoreHandler *filestore.Handler, dashboardHandler *dashboard.Handler, xssPolicy *security.XSSPolicy) {
adminV1 := e.Group("/admin/v1") adminV1 := e.Group("/admin/v1")
// Add CSP middleware to admin routes (stricter policy) // Add CSP middleware to admin routes (stricter policy)
@@ -204,9 +204,21 @@ func RegisterAdminRoutes(e *echo.Echo, userHandler *user.Handler, companyHandler
filesGP.GET("/:file_id/download", fileStoreHandler.Download) filesGP.GET("/:file_id/download", fileStoreHandler.Download)
filesGP.DELETE("/:file_id", fileStoreHandler.Delete) filesGP.DELETE("/:file_id", fileStoreHandler.Delete)
} }
// Dashboard Routes
dashboardGP := adminV1.Group("/dashboard")
{
dashboardGP.Use(userHandler.AuthMiddleware())
dashboardGP.GET("/summary", dashboardHandler.Summary)
dashboardGP.GET("/trend", dashboardHandler.Trend)
dashboardGP.GET("/countries", dashboardHandler.Countries)
dashboardGP.GET("/notice-types", dashboardHandler.NoticeTypes)
dashboardGP.GET("/closing-soon", dashboardHandler.ClosingSoon)
dashboardGP.GET("/recent", dashboardHandler.Recent)
}
} }
func RegisterPublicRoutes(e *echo.Echo, customerHandler *customer.Handler, tenderHandler *tender.TenderHandler, feedbackHandler *feedback.Handler, tenderApprovalHandler *tender_approval.Handler, companyHandler *company.Handler, inquiryHandler *inquiry.Handler, categoryHandler *company_category.Handler, flagHandler *assets.Handler, notificationHandler *notification.NotificationHandler, contactHandler *contact.Handler, cmsHandler *cms.Handler, fileStoreHandler *filestore.Handler, dashboardHandler *dashboard.Handler, userHandler *user.Handler, xssPolicy *security.XSSPolicy) { func RegisterPublicRoutes(e *echo.Echo, customerHandler *customer.Handler, tenderHandler *tender.TenderHandler, feedbackHandler *feedback.Handler, tenderApprovalHandler *tender_approval.Handler, companyHandler *company.Handler, inquiryHandler *inquiry.Handler, categoryHandler *company_category.Handler, flagHandler *assets.Handler, notificationHandler *notification.NotificationHandler, contactHandler *contact.Handler, cmsHandler *cms.Handler, fileStoreHandler *filestore.Handler, xssPolicy *security.XSSPolicy) {
v1 := e.Group("/api/v1") v1 := e.Group("/api/v1")
// Add CSP middleware to public routes // Add CSP middleware to public routes
@@ -310,18 +322,6 @@ func RegisterPublicRoutes(e *echo.Echo, customerHandler *customer.Handler, tende
cmsGP.GET("/:key", cmsHandler.GetByKey) cmsGP.GET("/:key", cmsHandler.GetByKey)
} }
// Dashboard Routes (admin auth on public API prefix per dashboard-api.md)
dashboardGP := v1.Group("/dashboard")
{
dashboardGP.Use(userHandler.AuthMiddleware())
dashboardGP.GET("/summary", dashboardHandler.Summary)
dashboardGP.GET("/trend", dashboardHandler.Trend)
dashboardGP.GET("/countries", dashboardHandler.Countries)
dashboardGP.GET("/notice-types", dashboardHandler.NoticeTypes)
dashboardGP.GET("/closing-soon", dashboardHandler.ClosingSoon)
dashboardGP.GET("/recent", dashboardHandler.Recent)
}
// File Store Routes // File Store Routes
publicFilesGP := v1.Group("/files") publicFilesGP := v1.Group("/files")
{ {
+6 -6
View File
@@ -25,7 +25,7 @@ func NewHandler(service Service) *Handler {
// @Param closing_window query int false "Hours considered closing soon (default 168)" // @Param closing_window query int false "Hours considered closing soon (default 168)"
// @Success 200 {object} response.APIResponse{data=SummaryResponse} // @Success 200 {object} response.APIResponse{data=SummaryResponse}
// @Failure 500 {object} response.APIResponse // @Failure 500 {object} response.APIResponse
// @Router /api/v1/dashboard/summary [get] // @Router /admin/v1/dashboard/summary [get]
// @Security BearerAuth // @Security BearerAuth
func (h *Handler) Summary(c echo.Context) error { func (h *Handler) Summary(c echo.Context) error {
query := SummaryQuery{ query := SummaryQuery{
@@ -50,7 +50,7 @@ func (h *Handler) Summary(c echo.Context) error {
// @Param metric query string false "created|published|awarded (default created)" // @Param metric query string false "created|published|awarded (default created)"
// @Success 200 {object} response.APIResponse{data=TrendResponse} // @Success 200 {object} response.APIResponse{data=TrendResponse}
// @Failure 500 {object} response.APIResponse // @Failure 500 {object} response.APIResponse
// @Router /api/v1/dashboard/trend [get] // @Router /admin/v1/dashboard/trend [get]
// @Security BearerAuth // @Security BearerAuth
func (h *Handler) Trend(c echo.Context) error { func (h *Handler) Trend(c echo.Context) error {
query := TrendQuery{ query := TrendQuery{
@@ -75,7 +75,7 @@ func (h *Handler) Trend(c echo.Context) error {
// @Param limit query int false "Top N countries (default 6)" // @Param limit query int false "Top N countries (default 6)"
// @Success 200 {object} response.APIResponse{data=CountriesResponse} // @Success 200 {object} response.APIResponse{data=CountriesResponse}
// @Failure 500 {object} response.APIResponse // @Failure 500 {object} response.APIResponse
// @Router /api/v1/dashboard/countries [get] // @Router /admin/v1/dashboard/countries [get]
// @Security BearerAuth // @Security BearerAuth
func (h *Handler) Countries(c echo.Context) error { func (h *Handler) Countries(c echo.Context) error {
query := CountriesQuery{ query := CountriesQuery{
@@ -98,7 +98,7 @@ func (h *Handler) Countries(c echo.Context) error {
// @Produce json // @Produce json
// @Success 200 {object} response.APIResponse{data=NoticeTypesResponse} // @Success 200 {object} response.APIResponse{data=NoticeTypesResponse}
// @Failure 500 {object} response.APIResponse // @Failure 500 {object} response.APIResponse
// @Router /api/v1/dashboard/notice-types [get] // @Router /admin/v1/dashboard/notice-types [get]
// @Security BearerAuth // @Security BearerAuth
func (h *Handler) NoticeTypes(c echo.Context) error { func (h *Handler) NoticeTypes(c echo.Context) error {
out, err := h.service.NoticeTypes(c.Request().Context()) out, err := h.service.NoticeTypes(c.Request().Context())
@@ -119,7 +119,7 @@ func (h *Handler) NoticeTypes(c echo.Context) error {
// @Param window query int false "Hours horizon (default 168)" // @Param window query int false "Hours horizon (default 168)"
// @Success 200 {object} response.APIResponse{data=ClosingSoonResponse} // @Success 200 {object} response.APIResponse{data=ClosingSoonResponse}
// @Failure 500 {object} response.APIResponse // @Failure 500 {object} response.APIResponse
// @Router /api/v1/dashboard/closing-soon [get] // @Router /admin/v1/dashboard/closing-soon [get]
// @Security BearerAuth // @Security BearerAuth
func (h *Handler) ClosingSoon(c echo.Context) error { func (h *Handler) ClosingSoon(c echo.Context) error {
query := ClosingSoonQuery{ query := ClosingSoonQuery{
@@ -144,7 +144,7 @@ func (h *Handler) ClosingSoon(c echo.Context) error {
// @Param cursor query string false "Opaque pagination cursor" // @Param cursor query string false "Opaque pagination cursor"
// @Success 200 {object} response.APIResponse{data=RecentResponse} // @Success 200 {object} response.APIResponse{data=RecentResponse}
// @Failure 500 {object} response.APIResponse // @Failure 500 {object} response.APIResponse
// @Router /api/v1/dashboard/recent [get] // @Router /admin/v1/dashboard/recent [get]
// @Security BearerAuth // @Security BearerAuth
func (h *Handler) Recent(c echo.Context) error { func (h *Handler) Recent(c echo.Context) error {
query := RecentQuery{ query := RecentQuery{