diff --git a/pkg/components/securejsondata/securejsondata.go b/pkg/components/securejsondata/securejsondata.go new file mode 100644 index 00000000000..d7bec6894b0 --- /dev/null +++ b/pkg/components/securejsondata/securejsondata.go @@ -0,0 +1,24 @@ +package securejsondata + +import ( + "github.com/grafana/grafana/pkg/setting" + "github.com/grafana/grafana/pkg/util" +) + +type SecureJsonData map[string][]byte + +func (s SecureJsonData) Decrypt() map[string]string { + decrypted := make(map[string]string) + for key, data := range s { + decrypted[key] = string(util.Decrypt(data, setting.SecretKey)) + } + return decrypted +} + +func GetEncryptedJsonData(sjd map[string]string) SecureJsonData { + encrypted := make(SecureJsonData) + for key, data := range sjd { + encrypted[key] = util.Encrypt([]byte(data), setting.SecretKey) + } + return encrypted +} diff --git a/pkg/models/plugin_settings.go b/pkg/models/plugin_settings.go index 21c48411797..bbfbaabd8c6 100644 --- a/pkg/models/plugin_settings.go +++ b/pkg/models/plugin_settings.go @@ -4,8 +4,7 @@ import ( "errors" "time" - "github.com/grafana/grafana/pkg/setting" - "github.com/grafana/grafana/pkg/util" + "github.com/grafana/grafana/pkg/components/securejsondata" ) var ( @@ -19,23 +18,13 @@ type PluginSetting struct { Enabled bool Pinned bool JsonData map[string]interface{} - SecureJsonData SecureJsonData + SecureJsonData securejsondata.SecureJsonData PluginVersion string Created time.Time Updated time.Time } -type SecureJsonData map[string][]byte - -func (s SecureJsonData) Decrypt() map[string]string { - decrypted := make(map[string]string) - for key, data := range s { - decrypted[key] = string(util.Decrypt(data, setting.SecretKey)) - } - return decrypted -} - // ---------------------- // COMMANDS @@ -58,12 +47,8 @@ type UpdatePluginSettingVersionCmd struct { OrgId int64 `json:"-"` } -func (cmd *UpdatePluginSettingCmd) GetEncryptedJsonData() SecureJsonData { - encrypted := make(SecureJsonData) - for key, data := range cmd.SecureJsonData { - encrypted[key] = util.Encrypt([]byte(data), setting.SecretKey) - } - return encrypted +func (cmd *UpdatePluginSettingCmd) GetEncryptedJsonData() securejsondata.SecureJsonData { + return securejsondata.GetEncryptedJsonData(cmd.SecureJsonData) } // ---------------------