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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 6x 6x 6x 6x 6x 6x 6x 2x 6x 1x 6x 6x 1x 1x 1x 1x 1x 6x 1x 1x 6x 1x 1x 1x 6x 2x | /* * Copyright 2022 Harness Inc. All rights reserved. * Use of this source code is governed by the PolyForm Shield 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/06/PolyForm-Shield-1.0.0.txt. */ import React, { Dispatch, SetStateAction } from 'react' import { useParams } from 'react-router-dom' import { Container, Card, Switch, Text, Button, ButtonVariation, useConfirmationDialog } from '@wings-software/uicore' import { Color } from '@harness/design-system' import { TagInput } from '@blueprintjs/core' import { useStrings } from 'framework/strings' import type { AccountPathProps } from '@common/interfaces/RouteInterfaces' import { useToaster } from '@common/components' import { useUpdateWhitelistedDomains } from 'services/cd-ng' import { useRestrictEmailDomains } from '@auth-settings/modals/RestrictEmailDomains/useRestrictEmailDomains' import useRBACError from '@rbac/utils/useRBACError/useRBACError' import css from './RestrictEmailDomains.module.scss' interface Props { whitelistedDomains: string[] refetchAuthSettings: () => void canEdit: boolean setUpdating: Dispatch<SetStateAction<boolean>> } const RestrictEmailDomains: React.FC<Props> = ({ whitelistedDomains, refetchAuthSettings, canEdit, setUpdating }) => { const { getRBACErrorMessage } = useRBACError() const { getString } = useStrings() const { showSuccess, showError } = useToaster() const { accountId } = useParams<AccountPathProps>() const emailRestrictionsEnabled = !!whitelistedDomains.length const { mutate: updateWhitelistedDomains, loading: updatingWhitelistedDomains } = useUpdateWhitelistedDomains({ queryParams: { accountIdentifier: accountId } }) React.useEffect(() => { setUpdating(updatingWhitelistedDomains) }, [updatingWhitelistedDomains, setUpdating]) const onSuccess = (): void => { refetchAuthSettings() } const { openRestrictEmailDomainsModal } = useRestrictEmailDomains({ onSuccess, whitelistedDomains }) const disableWhitelistedDomains = async (): Promise<void> => { try { const disabled = await updateWhitelistedDomains([]) /* istanbul ignore else */ if (disabled) { refetchAuthSettings() showSuccess(getString('authSettings.whitelistedDomainsDisabled'), 5000) } } catch (e) { /* istanbul ignore next */ showError(getRBACErrorMessage(e), 5000) } } const { openDialog: confirmWhitelistedDomainsDisable } = useConfirmationDialog({ titleText: getString('authSettings.disableWhitelistedDomains'), contentText: getString('authSettings.confirmDisableWhitelistedDomains'), confirmButtonText: getString('confirm'), cancelButtonText: getString('cancel'), onCloseDialog: isConfirmed => { /* istanbul ignore else */ if (isConfirmed) { disableWhitelistedDomains() } } }) const onChangeWhitelistedDomains = (e: React.FormEvent<HTMLInputElement>): void => { const enable = e.currentTarget.checked Eif (emailRestrictionsEnabled && !enable) { confirmWhitelistedDomainsDisable() } else if (!emailRestrictionsEnabled && enable) { openRestrictEmailDomainsModal() } } return ( <Container margin="xlarge"> <Card className={css.card}> <Switch labelElement={ <Text inline color={Color.BLACK} font={{ weight: 'bold', size: 'normal' }}> {getString( emailRestrictionsEnabled ? 'authSettings.allowUsersWithEmails' : 'authSettings.restrictUsersToEmailDomains' )} </Text> } checked={emailRestrictionsEnabled} onChange={onChangeWhitelistedDomains} disabled={!canEdit || updatingWhitelistedDomains} data-testid="toggle-restrict-email-domains" /> {emailRestrictionsEnabled && ( <TagInput disabled values={whitelistedDomains} rightElement={ <Button variation={ButtonVariation.ICON} icon="Edit" onClick={openRestrictEmailDomainsModal} disabled={!canEdit} data-testid="update-restrict-email-domains" /> } className={css.input} tagProps={{ minimal: true }} /> )} </Card> </Container> ) } export default RestrictEmailDomains |