dashboard_acl.go 869 B

12345678910111213141516171819202122232425262728293031
  1. package api
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. "github.com/grafana/grafana/pkg/middleware"
  5. m "github.com/grafana/grafana/pkg/models"
  6. "github.com/grafana/grafana/pkg/services/guardian"
  7. "github.com/grafana/grafana/pkg/util"
  8. )
  9. func GetDashboardAcl(c *middleware.Context) Response {
  10. dashboardId := c.ParamsInt64(":id")
  11. hasPermission, err := guardian.CanViewAcl(dashboardId, c.OrgRole, c.IsGrafanaAdmin, c.OrgId, c.UserId)
  12. if err != nil {
  13. return ApiError(500, "Failed to get Dashboard ACL", err)
  14. }
  15. if !hasPermission {
  16. return Json(403, util.DynMap{"status": "Forbidden", "message": "Does not have access to this Dashboard ACL"})
  17. }
  18. query := m.GetDashboardPermissionsQuery{DashboardId: dashboardId}
  19. if err := bus.Dispatch(&query); err != nil {
  20. return ApiError(500, "Failed to get Dashboard ACL", err)
  21. }
  22. return Json(200, &query.Result)
  23. }