Browse Source

folders: admin for created folders

Leonard Gram 6 years ago
parent
commit
e174f7c20b
1 changed files with 40 additions and 0 deletions
  1. 40 0
      pkg/services/dashboards/folder_service.go

+ 40 - 0
pkg/services/dashboards/folder_service.go

@@ -5,6 +5,7 @@ import (
 	"github.com/grafana/grafana/pkg/models"
 	"github.com/grafana/grafana/pkg/services/guardian"
 	"github.com/grafana/grafana/pkg/services/search"
+	"time"
 )
 
 // FolderService service for operating on folders
@@ -114,6 +115,45 @@ func (dr *dashboardServiceImpl) CreateFolder(cmd *models.CreateFolderCommand) er
 		return toFolderError(err)
 	}
 
+	rtEditor := models.ROLE_EDITOR
+	rtViewer := models.ROLE_VIEWER
+
+	items := []*models.DashboardAcl{
+		{
+			OrgId:       dr.orgId,
+			DashboardId: saveDashboardCmd.Result.Id,
+			UserId:      saveDashboardCmd.Result.CreatedBy,
+			Permission:  models.PERMISSION_ADMIN,
+			Created:     time.Now(),
+			Updated:     time.Now(),
+		},
+		{
+			OrgId:       dr.orgId,
+			DashboardId: saveDashboardCmd.Result.Id,
+			Role:        &rtEditor,
+			Permission:  models.PERMISSION_EDIT,
+			Created:     time.Now(),
+			Updated:     time.Now(),
+		},
+		{
+			OrgId:       dr.orgId,
+			DashboardId: saveDashboardCmd.Result.Id,
+			Role:        &rtViewer,
+			Permission:  models.PERMISSION_VIEW,
+			Created:     time.Now(),
+			Updated:     time.Now(),
+		},
+	}
+
+	aclCmd := &models.UpdateDashboardAclCommand{
+		DashboardId: saveDashboardCmd.Result.Id,
+		Items:       items,
+	}
+
+	if err = bus.Dispatch(aclCmd); err != nil {
+		return err
+	}
+
 	query := models.GetDashboardQuery{OrgId: dr.orgId, Id: saveDashboardCmd.Result.Id}
 	dashFolder, err = getFolder(query)
 	if err != nil {