Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 20x 20x 20x 20x 20x 20x 20x 1x 1x 1x 1x 1x 1x 20x 10x 20x 2x 1x 1x 1x 1x | /* * Copyright 2021 Harness Inc. All rights reserved. * Use of this source code is governed by the PolyForm Free Trial 1.0.0 license * that can be found in the licenses directory at the root of this repository, also available at * https://polyformproject.org/wp-content/uploads/2020/05/PolyForm-Free-Trial-1.0.0.txt. */ import React from 'react' import { Button, Layout, Text, shouldShowError, useConfirmationDialog } from '@wings-software/uicore' import { Color } from '@harness/design-system' import { useStrings } from 'framework/strings' import { useDisableTwoFactorAuth } from 'services/cd-ng' import { useToaster } from '@common/exports' import { useQueryParams } from '@common/hooks' import { useEnableTwoFactorAuthModal } from '@user-profile/modals/EnableTwoFactorAuth/useEnableTwoFactorAuthModal' import { useAppStore } from 'framework/AppStore/AppStoreContext' import { FeatureIdentifier } from 'framework/featureStore/FeatureIdentifier' import FeatureSwitch from '@rbac/components/Switch/Switch' import css from './TwoFactorAuthentication.module.scss' interface Props { twoFactorAuthenticationDisabled: boolean } const TwoFactorAuthentication: React.FC<Props> = ({ twoFactorAuthenticationDisabled }) => { const { getString } = useStrings() const { openTwoFactorModal } = useQueryParams<{ openTwoFactorModal?: string }>() const { showSuccess, showError } = useToaster() const { currentUserInfo, updateAppStore } = useAppStore() const { mutate: disableTwoFactorAuth } = useDisableTwoFactorAuth({}) const { openEnableTwoFactorAuthModal } = useEnableTwoFactorAuthModal() const { openDialog: disableTwoFactorAuthDialog } = useConfirmationDialog({ titleText: getString('userProfile.twoFactor.disableTitle'), contentText: getString('userProfile.twoFactor.disableText'), confirmButtonText: getString('common.disable'), cancelButtonText: getString('cancel'), onCloseDialog: async (isConfirmed: boolean) => { /* istanbul ignore else */ if (isConfirmed) { try { const disabled = await disableTwoFactorAuth('' as any, { headers: { 'content-type': 'application/json' } }) /* istanbul ignore else */ if (disabled) { showSuccess(getString('userProfile.twoFactor.disableSuccess')) updateAppStore({ currentUserInfo: disabled.data }) } } catch (e) { /* istanbul ignore next */ if (shouldShowError(e)) { showError(e.data.message || e.message) } } } } }) React.useEffect(() => { /* istanbul ignore else */ Iif (openTwoFactorModal === 'true') { openEnableTwoFactorAuthModal(false) } // eslint-disable-next-line react-hooks/exhaustive-deps }, [openTwoFactorModal]) return ( <> <Layout.Horizontal spacing="small" className={css.twoFactorAuth}> <FeatureSwitch featureProps={{ featureRequest: { featureName: FeatureIdentifier.TWO_FACTOR_AUTH_SUPPORT } }} className={css.switch} data-testid={'TwoFactorAuthSwitch'} checked={currentUserInfo.twoFactorAuthenticationEnabled} disabled={twoFactorAuthenticationDisabled} onChange={event => { if (event.currentTarget.checked) { openEnableTwoFactorAuthModal(false) } else { disableTwoFactorAuthDialog() } }} /> <Text color={Color.BLACK} font={{ weight: 'semi-bold' }}> {getString('userProfile.twofactorAuth')} </Text> </Layout.Horizontal> {currentUserInfo.twoFactorAuthenticationEnabled ? ( <Button icon="reset" minimal onClick={() => openEnableTwoFactorAuthModal(true)} /> ) : null} </> ) } export default TwoFactorAuthentication |