acl_service.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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) 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. OrgId: orgId,
  31. DashboardId: dashboardId,
  32. Role: &rtEditor,
  33. Permission: models.PERMISSION_EDIT,
  34. Created: time.Now(),
  35. Updated: time.Now(),
  36. },
  37. {
  38. OrgId: orgId,
  39. DashboardId: dashboardId,
  40. Role: &rtViewer,
  41. Permission: models.PERMISSION_VIEW,
  42. Created: time.Now(),
  43. Updated: time.Now(),
  44. },
  45. }
  46. aclCmd := &models.UpdateDashboardAclCommand{
  47. DashboardId: dashboardId,
  48. Items: items,
  49. }
  50. if err := bus.Dispatch(aclCmd); err != nil {
  51. return err
  52. }
  53. return nil
  54. }