diff --git a/apps/meteor/client/views/account/security/TwoFactorEmail.tsx b/apps/meteor/client/views/account/security/TwoFactorEmail.tsx index c890dc61e658..aab6ff2c520f 100644 --- a/apps/meteor/client/views/account/security/TwoFactorEmail.tsx +++ b/apps/meteor/client/views/account/security/TwoFactorEmail.tsx @@ -1,15 +1,18 @@ import { Box, Button, Margins } from '@rocket.chat/fuselage'; -import { useUser, useTranslation } from '@rocket.chat/ui-contexts'; -import type { ComponentProps, ReactElement } from 'react'; +import { useUser, useTranslation, useSetting } from '@rocket.chat/ui-contexts'; +import type { ComponentProps } from 'react'; import React, { useCallback } from 'react'; import { useEndpointAction } from '../../../hooks/useEndpointAction'; -const TwoFactorEmail = (props: ComponentProps): ReactElement => { +const TwoFactorEmail = (props: ComponentProps): JSX.Element | null => { const t = useTranslation(); const user = useUser(); + const disableEmail2FAForOAuth = useSetting('Accounts_TwoFactorAuthentication_Disable_Email_For_OAuth_Users'); + const isOAuthUser = !user?.services?.password?.exists; const isEnabled = user?.services?.email2fa?.enabled; + const isAllowed = !isOAuthUser || !disableEmail2FAForOAuth; const enable2faAction = useEndpointAction('POST', '/v1/users.2fa.enableEmail', { successMessage: t('Two-factor_authentication_enabled'), @@ -25,6 +28,10 @@ const TwoFactorEmail = (props: ComponentProps): ReactElement => { await disable2faAction(); }, [disable2faAction]); + if (!isAllowed) { + return null; + } + return (