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 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | /*
* 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 from 'react'
import { useParams } from 'react-router-dom'
import { Callout } from '@blueprintjs/core'
import { Page } from '@common/exports'
import RBACTooltip from '@rbac/components/RBACTooltip/RBACTooltip'
import { useGetAuthenticationSettings } from 'services/cd-ng'
import { useStrings } from 'framework/strings'
import type { AccountPathProps } from '@common/interfaces/RouteInterfaces'
import AccountAndOAuth from '@auth-settings/pages/Configuration/AccountAndOAuth/AccountAndOAuth'
import SAMLProvider from '@auth-settings/pages/Configuration/SAMLProvider/SAMLProvider'
import RestrictEmailDomains from '@auth-settings/pages/Configuration/RestrictEmailDomains/RestrictEmailDomains'
import { usePermission } from '@rbac/hooks/usePermission'
import { ResourceType } from '@rbac/interfaces/ResourceType'
import { PermissionIdentifier } from '@rbac/interfaces/PermissionIdentifier'
import { NGBreadcrumbs } from '@common/components/NGBreadcrumbs/NGBreadcrumbs'
import css from './Configuration.module.scss'
export interface PermissionRequest {
resourceScope: {
accountIdentifier: string
}
resource: {
resourceType: ResourceType
}
}
const Configuration: React.FC = () => {
const params = useParams<AccountPathProps>()
const { accountId } = params
const { getString } = useStrings()
const [updating, setUpdating] = React.useState(false)
const permissionRequest = {
resourceScope: {
accountIdentifier: accountId
},
resource: {
resourceType: ResourceType.AUTHSETTING
}
}
const [canEdit] = usePermission(
{
...permissionRequest,
permissions: [PermissionIdentifier.EDIT_AUTHSETTING]
},
[]
)
const {
data,
loading: fetchingAuthSettings,
error: errorWhileFetchingAuthSettings,
refetch: refetchAuthSettings
} = useGetAuthenticationSettings({
queryParams: {
accountIdentifier: accountId
}
})
return (
<React.Fragment>
<Page.Header breadcrumbs={<NGBreadcrumbs />} title={getString('authentication')} />
<Page.Body
loading={fetchingAuthSettings || updating}
loadingMessage={updating ? getString('authSettings.updating') : undefined}
error={
(errorWhileFetchingAuthSettings?.data as Error)?.message ||
errorWhileFetchingAuthSettings?.message ||
(data?.resource ? undefined : getString('somethingWentWrong'))
}
retryOnError={() => refetchAuthSettings()}
>
{data?.resource && (
<React.Fragment>
{!canEdit && (
<Callout icon={null} className={css.callout}>
<RBACTooltip
permission={PermissionIdentifier.EDIT_AUTHSETTING}
resourceType={permissionRequest.resource.resourceType}
resourceScope={permissionRequest.resourceScope}
/>
</Callout>
)}
<AccountAndOAuth
authSettings={data.resource}
refetchAuthSettings={refetchAuthSettings}
canEdit={canEdit}
setUpdating={setUpdating}
/>
<SAMLProvider
authSettings={data.resource}
refetchAuthSettings={refetchAuthSettings}
permissionRequest={permissionRequest}
canEdit={canEdit}
setUpdating={setUpdating}
/>
<RestrictEmailDomains
whitelistedDomains={data.resource.whitelistedDomains || []}
refetchAuthSettings={refetchAuthSettings}
canEdit={canEdit}
setUpdating={setUpdating}
/>
</React.Fragment>
)}
</Page.Body>
</React.Fragment>
)
}
export default Configuration
|