|
|
@@ -35,6 +35,14 @@ func isDashboardStarredByUser(c *middleware.Context, dashId int64) (bool, error)
|
|
|
return query.Result, nil
|
|
|
}
|
|
|
|
|
|
+func dashboardGuardianResponse(err error) Response {
|
|
|
+ if err != nil {
|
|
|
+ return ApiError(500, "Error while checking dashboard permissions", err)
|
|
|
+ } else {
|
|
|
+ return ApiError(403, "Access denied to this dashboard", nil)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
func GetDashboard(c *middleware.Context) Response {
|
|
|
dash, rsp := getDashboardHelper(c.OrgId, c.Params(":slug"), 0)
|
|
|
if rsp != nil {
|
|
|
@@ -43,10 +51,8 @@ func GetDashboard(c *middleware.Context) Response {
|
|
|
|
|
|
guardian := guardian.NewDashboardGuardian(dash.Id, c.OrgId, c.SignedInUser)
|
|
|
|
|
|
- if canView, err := guardian.CanView(); err != nil {
|
|
|
- return ApiError(500, "Error while checking dashboard permissions", err)
|
|
|
- } else if !canView {
|
|
|
- return ApiError(403, "Access denied to this dashboard", nil)
|
|
|
+ if canView, err := guardian.CanView(); err != nil || !canView {
|
|
|
+ return dashboardGuardianResponse(err)
|
|
|
}
|
|
|
|
|
|
canEdit, _ := guardian.CanEdit()
|
|
|
@@ -130,12 +136,9 @@ func DeleteDashboard(c *middleware.Context) Response {
|
|
|
return rsp
|
|
|
}
|
|
|
|
|
|
- guardian := guardian.NewDashboardGuardian(dash, c.SignedInUser)
|
|
|
-
|
|
|
- if canSave, err := guardian.CanSave(); err != nil {
|
|
|
- return ApiError(500, "Error while checking dashboard permissions", err)
|
|
|
- } else if !canSave {
|
|
|
- return ApiError(403, "Does not have permission to delete this dashboard", nil)
|
|
|
+ guardian := guardian.NewDashboardGuardian(dash.Id, c.OrgId, c.SignedInUser)
|
|
|
+ if canSave, err := guardian.CanSave(); err != nil || !canSave {
|
|
|
+ return dashboardGuardianResponse(err)
|
|
|
}
|
|
|
|
|
|
cmd := m.DeleteDashboardCommand{OrgId: c.OrgId, Id: dash.Id}
|
|
|
@@ -160,12 +163,9 @@ func PostDashboard(c *middleware.Context, cmd m.SaveDashboardCommand) Response {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- guardian := guardian.NewDashboardGuardian(dash, c.SignedInUser)
|
|
|
-
|
|
|
- if canSave, err := guardian.CanSave(); err != nil {
|
|
|
- return ApiError(500, "Error while checking dashboard permissions", err)
|
|
|
- } else if !canSave {
|
|
|
- return ApiError(403, "Does not have permission to save this dashboard", nil)
|
|
|
+ guardian := guardian.NewDashboardGuardian(dash.Id, c.OrgId, c.SignedInUser)
|
|
|
+ if canSave, err := guardian.CanSave(); err != nil || !canSave {
|
|
|
+ return dashboardGuardianResponse(err)
|
|
|
}
|
|
|
|
|
|
if dash.IsFolder && dash.ParentId > 0 {
|
|
|
@@ -306,27 +306,22 @@ func GetDashboardFromJsonFile(c *middleware.Context) {
|
|
|
|
|
|
// GetDashboardVersions returns all dashboard versions as JSON
|
|
|
func GetDashboardVersions(c *middleware.Context) Response {
|
|
|
- dash, rsp := getDashboardHelper(c.OrgId, "", c.ParamsInt64(":dashboardId"))
|
|
|
- if rsp != nil {
|
|
|
- return rsp
|
|
|
- }
|
|
|
+ dashId := c.ParamsInt64(":dashboardId")
|
|
|
|
|
|
- guardian := guardian.NewDashboardGuardian(dash, c.SignedInUser)
|
|
|
- if canSave, err := guardian.CanSave(); err != nil {
|
|
|
- return ApiError(500, "Error while checking dashboard permissions", err)
|
|
|
- } else if !canSave {
|
|
|
- return ApiError(403, "Dashboard access denied", nil)
|
|
|
+ guardian := guardian.NewDashboardGuardian(dashId, c.OrgId, c.SignedInUser)
|
|
|
+ if canSave, err := guardian.CanSave(); err != nil || !canSave {
|
|
|
+ return dashboardGuardianResponse(err)
|
|
|
}
|
|
|
|
|
|
query := m.GetDashboardVersionsQuery{
|
|
|
OrgId: c.OrgId,
|
|
|
- DashboardId: dash.Id,
|
|
|
+ DashboardId: dashId,
|
|
|
Limit: c.QueryInt("limit"),
|
|
|
Start: c.QueryInt("start"),
|
|
|
}
|
|
|
|
|
|
if err := bus.Dispatch(&query); err != nil {
|
|
|
- return ApiError(404, fmt.Sprintf("No versions found for dashboardId %d", dash.Id), err)
|
|
|
+ return ApiError(404, fmt.Sprintf("No versions found for dashboardId %d", dashId), err)
|
|
|
}
|
|
|
|
|
|
for _, version := range query.Result {
|
|
|
@@ -350,26 +345,21 @@ func GetDashboardVersions(c *middleware.Context) Response {
|
|
|
|
|
|
// GetDashboardVersion returns the dashboard version with the given ID.
|
|
|
func GetDashboardVersion(c *middleware.Context) Response {
|
|
|
- dash, rsp := getDashboardHelper(c.OrgId, "", c.ParamsInt64(":dashboardId"))
|
|
|
- if rsp != nil {
|
|
|
- return rsp
|
|
|
- }
|
|
|
+ dashId := c.ParamsInt64(":dashboardId")
|
|
|
|
|
|
- guardian := guardian.NewDashboardGuardian(dash, c.SignedInUser)
|
|
|
- if canSave, err := guardian.CanSave(); err != nil {
|
|
|
- return ApiError(500, "Error while checking dashboard permissions", err)
|
|
|
- } else if !canSave {
|
|
|
- return ApiError(403, "Dashboard access denied", nil)
|
|
|
+ guardian := guardian.NewDashboardGuardian(dashId, c.OrgId, c.SignedInUser)
|
|
|
+ if canSave, err := guardian.CanSave(); err != nil || !canSave {
|
|
|
+ return dashboardGuardianResponse(err)
|
|
|
}
|
|
|
|
|
|
query := m.GetDashboardVersionQuery{
|
|
|
OrgId: c.OrgId,
|
|
|
- DashboardId: dash.Id,
|
|
|
+ DashboardId: dashId,
|
|
|
Version: c.ParamsInt(":id"),
|
|
|
}
|
|
|
|
|
|
if err := bus.Dispatch(&query); err != nil {
|
|
|
- return ApiError(500, fmt.Sprintf("Dashboard version %d not found for dashboardId %d", query.Version, dash.Id), err)
|
|
|
+ return ApiError(500, fmt.Sprintf("Dashboard version %d not found for dashboardId %d", query.Version, dashId), err)
|
|
|
}
|
|
|
|
|
|
creator := "Anonymous"
|
|
|
@@ -425,6 +415,11 @@ func RestoreDashboardVersion(c *middleware.Context, apiCmd dtos.RestoreDashboard
|
|
|
return rsp
|
|
|
}
|
|
|
|
|
|
+ guardian := guardian.NewDashboardGuardian(dash.Id, c.OrgId, c.SignedInUser)
|
|
|
+ if canSave, err := guardian.CanSave(); err != nil || !canSave {
|
|
|
+ return dashboardGuardianResponse(err)
|
|
|
+ }
|
|
|
+
|
|
|
versionQuery := m.GetDashboardVersionQuery{DashboardId: dash.Id, Version: apiCmd.Version, OrgId: c.OrgId}
|
|
|
if err := bus.Dispatch(&versionQuery); err != nil {
|
|
|
return ApiError(404, "Dashboard version not found", nil)
|