From a11d3c6d2ac9d521351269d150108c8dc721900f Mon Sep 17 00:00:00 2001 From: Elias Nahum Date: Thu, 16 Feb 2023 14:12:43 +0200 Subject: [PATCH] Use config to set SAML and OpenId Button text (#7145) --- app/screens/login/index.tsx | 4 +- app/screens/login/sso_options.tsx | 54 ++++++++++++-------------- app/utils/server/index.ts | 12 +++--- assets/base/images/Icon_Openid.png | Bin 0 -> 1774 bytes assets/base/images/Icon_Openid@2x.png | Bin 0 -> 2953 bytes assets/base/images/Icon_Openid@3x.png | Bin 0 -> 4475 bytes types/screens/login.d.ts | 9 +++++ 7 files changed, 42 insertions(+), 37 deletions(-) create mode 100644 assets/base/images/Icon_Openid.png create mode 100644 assets/base/images/Icon_Openid@2x.png create mode 100644 assets/base/images/Icon_Openid@3x.png create mode 100644 types/screens/login.d.ts diff --git a/app/screens/login/index.tsx b/app/screens/login/index.tsx index d8e644c663..013d57420f 100644 --- a/app/screens/login/index.tsx +++ b/app/screens/login/index.tsx @@ -35,7 +35,7 @@ export interface LoginOptionsProps extends LaunchProps { license: ClientLicense; serverDisplayName: string; serverUrl: string; - ssoOptions: Record; + ssoOptions: SsoWithOptions; theme: Theme; } @@ -85,7 +85,7 @@ const LoginOptions = ({ const isTablet = useIsTablet(); const translateX = useSharedValue(dimensions.width); const numberSSOs = useMemo(() => { - return Object.values(ssoOptions).filter((v) => v).length; + return Object.values(ssoOptions).filter((v) => v.enabled).length; }, [ssoOptions]); const description = useMemo(() => { if (hasLoginForm) { diff --git a/app/screens/login/sso_options.tsx b/app/screens/login/sso_options.tsx index 12cab08715..e4a6c248e6 100644 --- a/app/screens/login/sso_options.tsx +++ b/app/screens/login/sso_options.tsx @@ -2,19 +2,17 @@ // See LICENSE.txt for license information. import React from 'react'; -import {Image, ImageSourcePropType, View} from 'react-native'; +import {useIntl} from 'react-intl'; +import {Image, ImageSourcePropType, Text, View} from 'react-native'; import Button from 'react-native-button'; import CompassIcon from '@components/compass_icon'; -import FormattedText from '@components/formatted_text'; import {Sso} from '@constants'; -import {t} from '@i18n'; import {buttonBackgroundStyle} from '@utils/buttonStyles'; import {makeStyleSheetFromTheme, changeOpacity} from '@utils/theme'; type SsoInfo = { - defaultMessage: string; - id: string; + text: string; imageSrc?: ImageSourcePropType; compassIcon?: string; }; @@ -22,40 +20,38 @@ type SsoInfo = { type Props = { goToSso: (ssoType: string) => void; ssoOnly: boolean; - ssoOptions: Record; + ssoOptions: SsoWithOptions; theme: Theme; } const SsoOptions = ({goToSso, ssoOnly, ssoOptions, theme}: Props) => { + const {formatMessage} = useIntl(); const styles = getStyleSheet(theme); const styleButtonBackground = buttonBackgroundStyle(theme, 'lg', 'primary'); const getSsoButtonOptions = ((ssoType: string): SsoInfo => { const sso: SsoInfo = {} as SsoInfo; + const options = ssoOptions[ssoType]; switch (ssoType) { case Sso.SAML: - sso.defaultMessage = 'SAML'; + sso.text = options.text || formatMessage({id: 'mobile.login_options.saml', defaultMessage: 'SAML'}); sso.compassIcon = 'lock'; - sso.id = t('mobile.login_options.saml'); break; case Sso.GITLAB: - sso.defaultMessage = 'GitLab'; + sso.text = formatMessage({id: 'mobile.login_options.gitlab', defaultMessage: 'GitLab'}); sso.imageSrc = require('@assets/images/Icon_Gitlab.png'); - sso.id = t('mobile.login_options.gitlab'); break; case Sso.GOOGLE: - sso.defaultMessage = 'Google'; + sso.text = formatMessage({id: 'mobile.login_options.google', defaultMessage: 'Google'}); sso.imageSrc = require('@assets/images/Icon_Google.png'); - sso.id = t('mobile.login_options.google'); break; case Sso.OFFICE365: - sso.defaultMessage = 'Office 365'; + sso.text = formatMessage({id: 'mobile.login_options.office365', defaultMessage: 'Office 365'}); sso.imageSrc = require('@assets/images/Icon_Office.png'); - sso.id = t('mobile.login_options.office365'); break; case Sso.OPENID: - sso.defaultMessage = 'Open ID'; - sso.id = t('mobile.login_options.openid'); + sso.text = options.text || formatMessage({id: 'mobile.login_options.openid', defaultMessage: 'Open ID'}); + sso.imageSrc = require('@assets/images/Icon_Openid.png'); break; default: @@ -64,7 +60,7 @@ const SsoOptions = ({goToSso, ssoOnly, ssoOptions, theme}: Props) => { }); const enabledSSOs = Object.keys(ssoOptions).filter( - (ssoType: string) => ssoOptions[ssoType], + (ssoType: string) => ssoOptions[ssoType].enabled, ); let styleViewContainer; @@ -76,7 +72,7 @@ const SsoOptions = ({goToSso, ssoOnly, ssoOptions, theme}: Props) => { const componentArray = []; for (const ssoType of enabledSSOs) { - const {compassIcon, defaultMessage, id, imageSrc} = getSsoButtonOptions(ssoType); + const {compassIcon, text, imageSrc} = getSsoButtonOptions(ssoType); const handlePress = () => { goToSso(ssoType); }; @@ -105,21 +101,21 @@ const SsoOptions = ({goToSso, ssoOnly, ssoOptions, theme}: Props) => { style={styles.buttonTextContainer} > {ssoOnly && ( - + testID={'pretext' + text} + > + {text} + )} - + testID={text} + > + {text} + , ); diff --git a/app/utils/server/index.ts b/app/utils/server/index.ts index 65995608a2..eee4525f6f 100644 --- a/app/utils/server/index.ts +++ b/app/utils/server/index.ts @@ -75,12 +75,12 @@ export function loginOptions(config: ClientConfig, license: ClientLicense) { } const ldapEnabled = isLicensed && config.EnableLdap === 'true' && license.LDAP === 'true'; const hasLoginForm = config.EnableSignInWithEmail === 'true' || config.EnableSignInWithUsername === 'true' || ldapEnabled; - const ssoOptions: Record = { - [Sso.SAML]: samlEnabled, - [Sso.GITLAB]: gitlabEnabled, - [Sso.GOOGLE]: googleEnabled, - [Sso.OFFICE365]: o365Enabled, - [Sso.OPENID]: openIdEnabled, + const ssoOptions: SsoWithOptions = { + [Sso.SAML]: {enabled: samlEnabled, text: config.SamlLoginButtonText}, + [Sso.GITLAB]: {enabled: gitlabEnabled}, + [Sso.GOOGLE]: {enabled: googleEnabled}, + [Sso.OFFICE365]: {enabled: o365Enabled}, + [Sso.OPENID]: {enabled: openIdEnabled, text: config.OpenIdButtonText}, }; const enabledSSOs = Object.keys(ssoOptions).filter((key) => ssoOptions[key]); const numberSSOs = enabledSSOs.length; diff --git a/assets/base/images/Icon_Openid.png b/assets/base/images/Icon_Openid.png new file mode 100644 index 0000000000000000000000000000000000000000..e16da3c97339f3e3f38dcd472d5d30795b70cc1b GIT binary patch literal 1774 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 literal 0 HcmV?d00001 diff --git a/assets/base/images/Icon_Openid@3x.png b/assets/base/images/Icon_Openid@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ad9b87cf89c0fd5ca702661240e593a38e07707 GIT binary patch literal 4475 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 Jtyl$p`#)R4_qG54 literal 0 HcmV?d00001 diff --git a/types/screens/login.d.ts b/types/screens/login.d.ts new file mode 100644 index 0000000000..6bc712f437 --- /dev/null +++ b/types/screens/login.d.ts @@ -0,0 +1,9 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +type SsoOption = { + enabled: boolean; + text?: string; +}; + +type SsoWithOptions = Record;