mirror of
https://github.com/grafana/grafana.git
synced 2024-12-01 13:09:22 -06:00
1b8e9b51b2
* Make identity.Requester available at Context * Clean pkg/services/guardian/guardian.go * Clean guardian provider and guardian AC * Clean pkg/api/team.go * Clean ctxhandler, datasources, plugin and live * Clean dashboards and guardian * Implement NewUserDisplayDTOFromRequester * Change status code numbers for http constants * Upgrade signature of ngalert services * log parsing errors instead of throwing error
59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
// Package adapters contains plugin SDK adapters.
|
|
package adapters
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
|
|
|
"github.com/grafana/grafana/pkg/services/auth/identity"
|
|
"github.com/grafana/grafana/pkg/services/datasources"
|
|
)
|
|
|
|
// ModelToInstanceSettings converts a datasources.DataSource to a backend.DataSourceInstanceSettings.
|
|
func ModelToInstanceSettings(ds *datasources.DataSource, decryptFn func(ds *datasources.DataSource) (map[string]string, error),
|
|
) (*backend.DataSourceInstanceSettings, error) {
|
|
var jsonDataBytes json.RawMessage
|
|
if ds.JsonData != nil {
|
|
var err error
|
|
jsonDataBytes, err = ds.JsonData.MarshalJSON()
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to convert data source to instance settings: %w", err)
|
|
}
|
|
}
|
|
decrypted, err := decryptFn(ds)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &backend.DataSourceInstanceSettings{
|
|
Type: ds.Type,
|
|
ID: ds.ID,
|
|
Name: ds.Name,
|
|
URL: ds.URL,
|
|
UID: ds.UID,
|
|
Database: ds.Database,
|
|
User: ds.User,
|
|
BasicAuthEnabled: ds.BasicAuth,
|
|
BasicAuthUser: ds.BasicAuthUser,
|
|
JSONData: jsonDataBytes,
|
|
DecryptedSecureJSONData: decrypted,
|
|
Updated: ds.Updated,
|
|
}, err
|
|
}
|
|
|
|
// BackendUserFromSignedInUser converts Grafana's context request identity
|
|
// to the backend plugin's model.
|
|
func BackendUserFromSignedInUser(requester identity.Requester) *backend.User {
|
|
if requester == nil {
|
|
return nil
|
|
}
|
|
return &backend.User{
|
|
Login: requester.GetLogin(),
|
|
Name: requester.GetDisplayName(),
|
|
Email: requester.GetEmail(),
|
|
Role: string(requester.GetOrgRole()),
|
|
}
|
|
}
|