浏览代码

dashfolders: allows phantomjs rendering for alerting

Makes the alerting user an admin when rendering a png
for emails
Daniel Lee 8 年之前
父节点
当前提交
446104d120
共有 2 个文件被更改,包括 19 次插入13 次删除
  1. 14 9
      pkg/components/renderer/renderer.go
  2. 5 4
      pkg/services/alerting/notifier.go

+ 14 - 9
pkg/components/renderer/renderer.go

@@ -21,14 +21,15 @@ import (
 )
 
 type RenderOpts struct {
-	Path     string
-	Width    string
-	Height   string
-	Timeout  string
-	OrgId    int64
-	UserId   int64
-	OrgRole  models.RoleType
-	Timezone string
+	Path           string
+	Width          string
+	Height         string
+	Timeout        string
+	OrgId          int64
+	UserId         int64
+	OrgRole        models.RoleType
+	Timezone       string
+	IsAlertContext bool
 }
 
 var rendererLog log.Logger = log.New("png-renderer")
@@ -75,7 +76,11 @@ func RenderToPng(params *RenderOpts) (string, error) {
 	pngPath, _ := filepath.Abs(filepath.Join(setting.ImagesDir, util.GetRandomString(20)))
 	pngPath = pngPath + ".png"
 
-	renderKey := middleware.AddRenderAuthKey(params.OrgId, params.UserId, params.OrgRole)
+	orgRole := params.OrgRole
+	if params.IsAlertContext {
+		orgRole = models.ROLE_ADMIN
+	}
+	renderKey := middleware.AddRenderAuthKey(params.OrgId, params.UserId, orgRole)
 	defer middleware.RemoveRenderAuthKey(renderKey)
 
 	cmdArgs := []string{

+ 5 - 4
pkg/services/alerting/notifier.go

@@ -79,10 +79,11 @@ func (n *notificationService) uploadImage(context *EvalContext) (err error) {
 	}
 
 	renderOpts := &renderer.RenderOpts{
-		Width:   "800",
-		Height:  "400",
-		Timeout: "30",
-		OrgId:   context.Rule.OrgId,
+		Width:          "800",
+		Height:         "400",
+		Timeout:        "30",
+		OrgId:          context.Rule.OrgId,
+		IsAlertContext: true,
 	}
 
 	if slug, err := context.GetDashboardSlug(); err != nil {