acl_service.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package dashboards
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. "github.com/grafana/grafana/pkg/log"
  5. "github.com/grafana/grafana/pkg/models"
  6. "time"
  7. )
  8. // NewService factory for creating a new dashboard service
  9. var NewAclService = func() *AclService {
  10. return &AclService{
  11. log: log.New("dashboard-acl-service"),
  12. }
  13. }
  14. type AclService struct {
  15. log log.Logger
  16. }
  17. func (as *AclService) MakeUserAdmin(orgId int64, userId int64, dashboardId int64, setViewAndEditPermissions bool) error {
  18. rtEditor := models.ROLE_EDITOR
  19. rtViewer := models.ROLE_VIEWER
  20. items := []*models.DashboardAcl{
  21. {
  22. OrgId: orgId,
  23. DashboardId: dashboardId,
  24. UserId: userId,
  25. Permission: models.PERMISSION_ADMIN,
  26. Created: time.Now(),
  27. Updated: time.Now(),
  28. },
  29. }
  30. if setViewAndEditPermissions {
  31. items = append(items,
  32. &models.DashboardAcl{
  33. OrgId: orgId,
  34. DashboardId: dashboardId,
  35. Role: &rtEditor,
  36. Permission: models.PERMISSION_EDIT,
  37. Created: time.Now(),
  38. Updated: time.Now(),
  39. },
  40. &models.DashboardAcl{
  41. OrgId: orgId,
  42. DashboardId: dashboardId,
  43. Role: &rtViewer,
  44. Permission: models.PERMISSION_VIEW,
  45. Created: time.Now(),
  46. Updated: time.Now(),
  47. },
  48. )
  49. }
  50. aclCmd := &models.UpdateDashboardAclCommand{
  51. DashboardId: dashboardId,
  52. Items: items,
  53. }
  54. if err := bus.Dispatch(aclCmd); err != nil {
  55. return err
  56. }
  57. return nil
  58. }