Dashboard: Add failsafe for slug generation (#23709)

pull/23696/head
Emil Tullstedt 6 years ago committed by GitHub
parent c0635947e8
commit b669bfdf5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 14
      pkg/models/dashboards.go

@ -1,6 +1,7 @@
package models
import (
"encoding/base64"
"errors"
"fmt"
"strings"
@ -189,7 +190,18 @@ func (dash *Dashboard) UpdateSlug() {
}
func SlugifyTitle(title string) string {
return slug.Make(strings.ToLower(title))
s := slug.Make(strings.ToLower(title))
if s == "" {
// If the dashboard name is only characters outside of the
// sluggable characters, the slug creation will return an
// empty string which will mess up URLs. This failsafe picks
// that up and creates the slug as a base64 identifier instead.
s = base64.RawURLEncoding.EncodeToString([]byte(title))
if slug.MaxLength != 0 && len(s) > slug.MaxLength {
s = s[:slug.MaxLength]
}
}
return s
}
// GetUrl return the html url for a folder if it's folder, otherwise for a dashboard

Loading…
Cancel
Save