WIP: API - add dash permission

This commit is contained in:
Daniel Lee
2017-06-09 21:56:13 +02:00
parent bc6aa74439
commit 9eccb4e79f
5 changed files with 39 additions and 8 deletions

View File

@@ -250,6 +250,7 @@ func (hs *HttpServer) registerRoutes() {
r.Group("/:id/acl", func() {
r.Get("/", wrap(GetDashboardAcl))
r.Post("/", quota("acl"), bind(m.AddOrUpdateDashboardPermissionCommand{}), wrap(PostDashboardAcl))
r.Delete("/user/:userId", wrap(DeleteDashboardAclByUser))
r.Delete("/user-group/:userGroupId", wrap(DeleteDashboardAclByUserGroup))
}, reqSignedIn)

View File

@@ -2,6 +2,7 @@ package api
import (
"github.com/grafana/grafana/pkg/bus"
"github.com/grafana/grafana/pkg/metrics"
"github.com/grafana/grafana/pkg/middleware"
m "github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/guardian"
@@ -30,6 +31,25 @@ func GetDashboardAcl(c *middleware.Context) Response {
return Json(200, &query.Result)
}
func PostDashboardAcl(c *middleware.Context, cmd m.AddOrUpdateDashboardPermissionCommand) Response {
cmd.OrgId = c.OrgId
cmd.DashboardId = c.ParamsInt64(":id")
if err := bus.Dispatch(&cmd); err != nil {
if err == m.ErrDashboardPermissionAlreadyAdded {
return ApiError(409, "Permission for user/user group already exists", err)
}
return ApiError(500, "Failed to create permission", err)
}
metrics.M_Api_Dashboard_Acl_Create.Inc(1)
return Json(200, &util.DynMap{
"permissionId": cmd.Result.Id,
"message": "Permission created",
})
}
func DeleteDashboardAclByUser(c *middleware.Context) Response {
dashboardId := c.ParamsInt64(":id")
userId := c.ParamsInt64(":userId")