diff --git a/pkg/services/frontend/frontend_settings.go b/pkg/services/frontend/frontend_settings.go new file mode 100644 index 00000000000..56e94bd12b8 --- /dev/null +++ b/pkg/services/frontend/frontend_settings.go @@ -0,0 +1,43 @@ +package frontend + +import "github.com/grafana/grafana/pkg/setting" + +// This is a copy of dtos.FrontendSettingsDTO with only the fields that the frontend-service +// sends, to prevent default values from overriding what comes from the /bootdata call. +// +// It's important the JSON names for these fields match dtos.FrontendSettingsDTO +// so the frontend can merge the two together correctly. +type FSFrontendSettings struct { + AuthProxyEnabled bool `json:"authProxyEnabled,omitempty"` + LdapEnabled bool `json:"ldapEnabled,omitempty"` + JwtHeaderName string `json:"jwtHeaderName,omitempty"` + JwtUrlLogin bool `json:"jwtUrlLogin,omitempty"` + AutoAssignOrg bool `json:"autoAssignOrg,omitempty"` + VerifyEmailEnabled bool `json:"verifyEmailEnabled,omitempty"` + DisableLoginForm bool `json:"disableLoginForm,omitempty"` + DisableUserSignUp bool `json:"disableUserSignUp,omitempty"` + LoginHint string `json:"loginHint,omitempty"` + PasswordHint string `json:"passwordHint,omitempty"` + AnonymousEnabled bool `json:"anonymousEnabled,omitempty"` + + GoogleAnalyticsId string `json:"googleAnalyticsId,omitempty"` + GoogleAnalytics4Id string `json:"googleAnalytics4Id,omitempty"` + GoogleAnalytics4SendManualPageViews bool `json:"GoogleAnalytics4SendManualPageViews,omitempty"` + + RudderstackWriteKey string `json:"rudderstackWriteKey,omitempty"` + RudderstackDataPlaneUrl string `json:"rudderstackDataPlaneUrl,omitempty"` + RudderstackSdkUrl string `json:"rudderstackSdkUrl,omitempty"` + RudderstackConfigUrl string `json:"rudderstackConfigUrl,omitempty"` + RudderstackIntegrationsUrl string `json:"rudderstackIntegrationsUrl,omitempty"` + + AnalyticsConsoleReporting bool `json:"analyticsConsoleReporting,omitempty"` + GrafanaJavascriptAgent setting.GrafanaJavascriptAgent `json:"grafanaJavascriptAgent,omitempty"` + + ApplicationInsightsConnectionString string `json:"applicationInsightsConnectionString,omitempty"` + ApplicationInsightsEndpointUrl string `json:"applicationInsightsEndpointUrl,omitempty"` + + TrustedTypesDefaultPolicyEnabled bool `json:"trustedTypesDefaultPolicyEnabled,omitempty"` + CSPReportOnlyEnabled bool `json:"cspReportOnlyEnabled,omitempty"` + Http2Enabled bool `json:"http2Enabled,omitempty"` + ReportingStaticContext map[string]string `json:"reportingStaticContext,omitempty"` +} diff --git a/pkg/services/frontend/index.go b/pkg/services/frontend/index.go index 76508052cf6..a2838fbd55b 100644 --- a/pkg/services/frontend/index.go +++ b/pkg/services/frontend/index.go @@ -35,7 +35,7 @@ type IndexViewData struct { AppTitle string Assets dtos.EntryPointAssets // Includes CDN info - Settings dtos.FrontendSettingsDTO + Settings FSFrontendSettings DefaultUser dtos.CurrentUser // Nonce is a cryptographic identifier for use with Content Security Policy. @@ -59,7 +59,7 @@ func NewIndexProvider(cfg *setting.Cfg, assetsManifest dtos.EntryPointAssets) (* // subset of frontend settings needed for the login page // TODO what about enterprise settings here? - frontendSettings := dtos.FrontendSettingsDTO{ + frontendSettings := FSFrontendSettings{ AnalyticsConsoleReporting: cfg.FrontendAnalyticsConsoleReporting, AnonymousEnabled: cfg.Anonymous.Enabled, ApplicationInsightsConnectionString: cfg.ApplicationInsightsConnectionString, diff --git a/pkg/services/frontend/index.html b/pkg/services/frontend/index.html index 15c0c26ab08..957581dc56f 100644 --- a/pkg/services/frontend/index.html +++ b/pkg/services/frontend/index.html @@ -261,7 +261,11 @@ // tenant-specific config // TODO split this into separate API calls const { navTree, settings, user } = await loadBootData(); - window.grafanaBootData.settings = settings; + + window.grafanaBootData.settings = { + ...settings, + ...window.grafanaBootData.settings, // preserve frontend-service settings + } window.grafanaBootData.navTree = navTree; window.grafanaBootData.user = user;