1package dtos 2 3import ( 4 "crypto/md5" 5 "fmt" 6 "regexp" 7 "strings" 8 9 "github.com/grafana/grafana/pkg/components/simplejson" 10 "github.com/grafana/grafana/pkg/infra/log" 11 "github.com/grafana/grafana/pkg/models" 12 "github.com/grafana/grafana/pkg/setting" 13) 14 15var regNonAlphaNumeric = regexp.MustCompile("[^a-zA-Z0-9]+") 16var mlog = log.New("models") 17 18type AnyId struct { 19 Id int64 `json:"id"` 20} 21 22type LoginCommand struct { 23 User string `json:"user" binding:"Required"` 24 Password string `json:"password" binding:"Required"` 25 Remember bool `json:"remember"` 26} 27 28type CurrentUser struct { 29 IsSignedIn bool `json:"isSignedIn"` 30 Id int64 `json:"id"` 31 Login string `json:"login"` 32 Email string `json:"email"` 33 Name string `json:"name"` 34 LightTheme bool `json:"lightTheme"` 35 OrgCount int `json:"orgCount"` 36 OrgId int64 `json:"orgId"` 37 OrgName string `json:"orgName"` 38 OrgRole models.RoleType `json:"orgRole"` 39 IsGrafanaAdmin bool `json:"isGrafanaAdmin"` 40 GravatarUrl string `json:"gravatarUrl"` 41 Timezone string `json:"timezone"` 42 WeekStart string `json:"weekStart"` 43 Locale string `json:"locale"` 44 HelpFlags1 models.HelpFlags1 `json:"helpFlags1"` 45 HasEditPermissionInFolders bool `json:"hasEditPermissionInFolders"` 46 Permissions UserPermissionsMap `json:"permissions,omitempty"` 47} 48 49type UserPermissionsMap map[string]bool 50 51type MetricRequest struct { 52 From string `json:"from"` 53 To string `json:"to"` 54 Queries []*simplejson.Json `json:"queries"` 55 Debug bool `json:"debug"` 56} 57 58func GetGravatarUrl(text string) string { 59 if setting.DisableGravatar { 60 return setting.AppSubUrl + "/public/img/user_profile.png" 61 } 62 63 if text == "" { 64 return "" 65 } 66 67 hasher := md5.New() 68 if _, err := hasher.Write([]byte(strings.ToLower(text))); err != nil { 69 mlog.Warn("Failed to hash text", "err", err) 70 } 71 return fmt.Sprintf(setting.AppSubUrl+"/avatar/%x", hasher.Sum(nil)) 72} 73 74func GetGravatarUrlWithDefault(text string, defaultText string) string { 75 if text != "" { 76 return GetGravatarUrl(text) 77 } 78 79 text = regNonAlphaNumeric.ReplaceAllString(defaultText, "") + "@localhost" 80 81 return GetGravatarUrl(text) 82} 83 84func IsHiddenUser(userLogin string, signedInUser *models.SignedInUser, cfg *setting.Cfg) bool { 85 if userLogin == "" || signedInUser.IsGrafanaAdmin || userLogin == signedInUser.Login { 86 return false 87 } 88 89 if _, hidden := cfg.HiddenUsers[userLogin]; hidden { 90 return true 91 } 92 93 return false 94} 95