Просмотр исходного кода

dashboards: user automatically becomes admin for created dashboards

Leonard Gram 6 лет назад
Родитель
Сommit
e294252e92
1 измененных файлов с 43 добавлено и 0 удалено
  1. 43 0
      pkg/services/dashboards/dashboard_service.go

+ 43 - 0
pkg/services/dashboards/dashboard_service.go

@@ -238,6 +238,49 @@ func (dr *dashboardServiceImpl) SaveDashboard(dto *SaveDashboardDTO) (*models.Da
 		return nil, err
 		return nil, err
 	}
 	}
 
 
+	// TODO: check if dashboard exists already. could have id set but not exist
+	if dto.Dashboard.Id == 0 && dto.Dashboard.Uid == "" {
+		rtEditor := models.ROLE_EDITOR
+		rtViewer := models.ROLE_VIEWER
+
+		items := []*models.DashboardAcl{
+			{
+				OrgId:       dr.orgId,
+				DashboardId: cmd.Result.Id,
+				UserId:      cmd.Result.CreatedBy,
+				Permission:  models.PERMISSION_ADMIN,
+				Created:     time.Now(),
+				Updated:     time.Now(),
+			},
+			{
+				OrgId:       dr.orgId,
+				DashboardId: cmd.Result.Id,
+				Role:        &rtEditor,
+				Permission:  models.PERMISSION_EDIT,
+				Created:     time.Now(),
+				Updated:     time.Now(),
+			},
+			{
+				OrgId:       dr.orgId,
+				DashboardId: cmd.Result.Id,
+				Role:        &rtViewer,
+				Permission:  models.PERMISSION_VIEW,
+				Created:     time.Now(),
+				Updated:     time.Now(),
+			},
+		}
+
+		aclCmd := &models.UpdateDashboardAclCommand{
+			DashboardId: cmd.Result.Id,
+			Items:       items,
+		}
+
+		if err = bus.Dispatch(aclCmd); err != nil {
+			return cmd.Result, err
+		}
+
+	}
+
 	return cmd.Result, nil
 	return cmd.Result, nil
 }
 }