From 10cc2fd6bc267ccdeefda0b3fc5720a5b0da0d5d Mon Sep 17 00:00:00 2001 From: kay delaney <45561153+kaydelaney@users.noreply.github.com> Date: Fri, 11 Feb 2022 13:54:24 +0000 Subject: [PATCH] Chore: Add types for OAuth settings in config (#45247) --- packages/grafana-data/src/types/config.ts | 22 ++++++++++++++++++- packages/grafana-data/src/types/index.ts | 2 +- packages/grafana-runtime/src/config.ts | 3 ++- .../components/Login/LoginServiceButtons.tsx | 14 ++++++------ 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/packages/grafana-data/src/types/config.ts b/packages/grafana-data/src/types/config.ts index b1d519c8b12..c07e212e9cd 100644 --- a/packages/grafana-data/src/types/config.ts +++ b/packages/grafana-data/src/types/config.ts @@ -65,6 +65,26 @@ export type PreloadPlugin = { version: string; }; +/** Supported OAuth services + * + * @public + */ +export type OAuth = + | 'github' + | 'gitlab' + | 'google' + | 'generic_oauth' + // | 'grafananet' Deprecated. Key always changed to "grafana_com" + | 'grafana_com' + | 'azuread' + | 'okta'; + +/** Map of enabled OAuth services and their respective names + * + * @public + */ +export type OAuthSettings = Partial>; + /** * Describes all the different Grafana configuration values available for an instance. * @@ -96,7 +116,7 @@ export interface GrafanaConfig { samlEnabled: boolean; autoAssignOrg: boolean; verifyEmailEnabled: boolean; - oauth: any; + oauth: OAuthSettings; disableUserSignUp: boolean; loginHint: any; passwordHint: any; diff --git a/packages/grafana-data/src/types/index.ts b/packages/grafana-data/src/types/index.ts index 05287ffa6bd..48d2fdf50f4 100644 --- a/packages/grafana-data/src/types/index.ts +++ b/packages/grafana-data/src/types/index.ts @@ -36,7 +36,7 @@ export * from './live'; export * from './variables'; export * from './geometry'; export { isUnsignedPluginSignature } from './pluginSignature'; -export { GrafanaConfig, BuildInfo, LicenseInfo, PreloadPlugin } from './config'; +export { OAuth, OAuthSettings, GrafanaConfig, BuildInfo, LicenseInfo, PreloadPlugin } from './config'; export { FeatureToggles } from './featureToggles.gen'; export * from './alerts'; export * from './slider'; diff --git a/packages/grafana-runtime/src/config.ts b/packages/grafana-runtime/src/config.ts index ec4825f27c1..d9258c84c71 100644 --- a/packages/grafana-runtime/src/config.ts +++ b/packages/grafana-runtime/src/config.ts @@ -9,6 +9,7 @@ import { GrafanaTheme2, LicenseInfo, MapLayerOptions, + OAuthSettings, PanelPluginMeta, PreloadPlugin, systemDateFormats, @@ -48,7 +49,7 @@ export class GrafanaBootConfig implements GrafanaConfig { samlName = ''; autoAssignOrg = true; verifyEmailEnabled = false; - oauth: any; + oauth: OAuthSettings = {}; disableUserSignUp = false; loginHint: any; passwordHint: any; diff --git a/public/app/core/components/Login/LoginServiceButtons.tsx b/public/app/core/components/Login/LoginServiceButtons.tsx index ffb4c5c046c..e51a8b5b972 100644 --- a/public/app/core/components/Login/LoginServiceButtons.tsx +++ b/public/app/core/components/Login/LoginServiceButtons.tsx @@ -29,44 +29,44 @@ const loginServices: () => LoginServices = () => { }, google: { bgColor: '#e84d3c', - enabled: oauthEnabled && config.oauth.google, + enabled: oauthEnabled && Boolean(config.oauth.google), name: 'Google', icon: 'google', }, azuread: { bgColor: '#2f2f2f', - enabled: oauthEnabled && config.oauth.azuread, + enabled: oauthEnabled && Boolean(config.oauth.azuread), name: 'Microsoft', icon: 'microsoft', }, github: { bgColor: '#464646', - enabled: oauthEnabled && config.oauth.github, + enabled: oauthEnabled && Boolean(config.oauth.github), name: 'GitHub', icon: 'github', }, gitlab: { bgColor: '#fc6d26', - enabled: oauthEnabled && config.oauth.gitlab, + enabled: oauthEnabled && Boolean(config.oauth.gitlab), name: 'GitLab', icon: 'gitlab', }, grafanacom: { bgColor: '#262628', - enabled: oauthEnabled && config.oauth.grafana_com, + enabled: oauthEnabled && Boolean(config.oauth.grafana_com), name: 'Grafana.com', hrefName: 'grafana_com', icon: 'grafana', }, okta: { bgColor: '#2f2f2f', - enabled: oauthEnabled && config.oauth.okta, + enabled: oauthEnabled && Boolean(config.oauth.okta), name: 'Okta', icon: 'okta', }, oauth: { bgColor: '#262628', - enabled: oauthEnabled && config.oauth.generic_oauth, + enabled: oauthEnabled && Boolean(config.oauth.generic_oauth), name: oauthEnabled && config.oauth.generic_oauth ? config.oauth.generic_oauth.name : 'OAuth', icon: 'signin', hrefName: 'generic_oauth',