PublicDashboards: Middleware creation (#77941)

This commit is contained in:
Juan Cabanas
2023-11-21 17:56:36 -03:00
committed by GitHub
parent a3576fc8cf
commit 9c5daed336
8 changed files with 81 additions and 8 deletions
+8 -6
View File
@@ -26,6 +26,7 @@ type Api struct {
AccessControl accesscontrol.AccessControl
Features *featuremgmt.FeatureManager
Log log.Logger
Middleware publicdashboards.Middleware
}
func ProvideApi(
@@ -33,6 +34,7 @@ func ProvideApi(
rr routing.RouteRegister,
ac accesscontrol.AccessControl,
features *featuremgmt.FeatureManager,
md publicdashboards.Middleware,
) *Api {
api := &Api{
PublicDashboardService: pd,
@@ -40,6 +42,7 @@ func ProvideApi(
AccessControl: ac,
Features: features,
Log: log.New("publicdashboards.api"),
Middleware: md,
}
// attach api if PublicDashboards feature flag is enabled
@@ -56,11 +59,11 @@ func (api *Api) RegisterAPIEndpoints() {
// Anonymous access to public dashboard route is configured in pkg/api/api.go
// because it is deeply dependent on the HTTPServer.Index() method and would result in a
// circular dependency
api.RouteRegister.Get("/api/public/dashboards/:accessToken", routing.Wrap(api.ViewPublicDashboard))
api.RouteRegister.Get("/api/public/dashboards/:accessToken/annotations", routing.Wrap(api.GetPublicAnnotations))
api.RouteRegister.Post("/api/public/dashboards/:accessToken/panels/:panelId/query", routing.Wrap(api.QueryPublicDashboard))
api.RouteRegister.Group("/api/public/dashboards/:accessToken", func(apiRoute routing.RouteRegister) {
apiRoute.Get("/", routing.Wrap(api.ViewPublicDashboard))
apiRoute.Get("/annotations", routing.Wrap(api.GetPublicAnnotations))
apiRoute.Post("/panels/:panelId/query", routing.Wrap(api.QueryPublicDashboard))
}, api.Middleware.HandleApi)
// Auth endpoints
auth := accesscontrol.Middleware(api.AccessControl)
@@ -68,7 +71,6 @@ func (api *Api) RegisterAPIEndpoints() {
// List public dashboards for org
api.RouteRegister.Get("/api/dashboards/public-dashboards", middleware.ReqSignedIn, routing.Wrap(api.ListPublicDashboards))
// Get public dashboard
api.RouteRegister.Get("/api/dashboards/uid/:dashboardUid/public-dashboards",
auth(accesscontrol.EvalPermission(dashboards.ActionDashboardsRead, uidScope)),