import { QueryResult, useMutation } from '@apollo/client'; import { IRole, TSamlAuthProvider } from '@automatisch/types'; import LoadingButton from '@mui/lab/LoadingButton'; import Stack from '@mui/material/Stack'; import MuiTextField from '@mui/material/TextField'; import useEnqueueSnackbar from 'hooks/useEnqueueSnackbar'; import * as React from 'react'; import ControlledAutocomplete from 'components/ControlledAutocomplete'; import Form from 'components/Form'; import Switch from 'components/Switch'; import TextField from 'components/TextField'; import { UPSERT_SAML_AUTH_PROVIDER } from 'graphql/mutations/upsert-saml-auth-provider'; import useFormatMessage from 'hooks/useFormatMessage'; import useRoles from 'hooks/useRoles.ee'; type SamlConfigurationProps = { provider?: TSamlAuthProvider; providerLoading: boolean; refetchProvider: QueryResult['refetch']; }; const defaultValues = { active: false, name: '', certificate: '', signatureAlgorithm: 'sha1', issuer: '', entryPoint: '', firstnameAttributeName: '', surnameAttributeName: '', emailAttributeName: '', roleAttributeName: '', defaultRoleId: '', }; function generateRoleOptions(roles: IRole[]) { return roles?.map(({ name: label, id: value }) => ({ label, value })); } function SamlConfiguration({ provider, providerLoading, refetchProvider, }: SamlConfigurationProps) { const formatMessage = useFormatMessage(); const { roles, loading: rolesLoading } = useRoles(); const enqueueSnackbar = useEnqueueSnackbar(); const [upsertSamlAuthProvider, { loading }] = useMutation( UPSERT_SAML_AUTH_PROVIDER ); const handleProviderUpdate = async ( providerDataToUpdate: Partial ) => { try { const { name, certificate, signatureAlgorithm, issuer, entryPoint, firstnameAttributeName, surnameAttributeName, emailAttributeName, roleAttributeName, active, defaultRoleId, } = providerDataToUpdate; await upsertSamlAuthProvider({ variables: { input: { name, certificate, signatureAlgorithm, issuer, entryPoint, firstnameAttributeName, surnameAttributeName, emailAttributeName, roleAttributeName, active, defaultRoleId, }, }, }); if (!provider?.id) { await refetchProvider(); } enqueueSnackbar(formatMessage('authenticationForm.successfullySaved'), { variant: 'success', }); } catch (error) { throw new Error('Failed while saving!'); } }; if (providerLoading) { return null; } return (
( )} /> ( )} loading={rolesLoading} /> {formatMessage('authenticationForm.save')}
); } export default SamlConfiguration;