import * as React from 'react'; import { useForm, SubmitHandler } from 'react-hook-form'; import I18n from 'i18n-js'; import Box from '../../common/Box'; import OAuthProvidersList from './OAuthProvidersList'; import { AuthenticationPages } from './AuthenticationSiteSettingsP'; import { OAuthsState } from '../../../reducers/oAuthsReducer'; import SiteSettingsInfoBox from '../../common/SiteSettingsInfoBox'; import { TENANT_SETTING_EMAIL_REGISTRATION_POLICY_ALL_ALLOWED, TENANT_SETTING_EMAIL_REGISTRATION_POLICY_CUSTOM_DOMAINS_ALLOWED, TENANT_SETTING_EMAIL_REGISTRATION_POLICY_NONE_ALLOWED, TenantSettingEmailRegistrationPolicy } from '../../../interfaces/ITenantSetting'; import { getLabel } from '../../../helpers/formUtils'; import HttpStatus from '../../../constants/http_status'; import { SmallMutedText } from '../../common/CustomTexts'; import Button from '../../common/Button'; export interface IAuthenticationForm { emailRegistrationPolicy: string; allowedEmailDomains: string; } interface Props { originForm: IAuthenticationForm; oAuths: OAuthsState; isSubmitting: boolean; submitError: string; handleToggleEnabledOAuth(id: number, enabled: boolean): void; handleToggleEnabledDefaultOAuth(id: number, enabled: boolean): void; handleDeleteOAuth(id: number): void; handleUpdateTenantSettings(emailRegistrationPolicy: TenantSettingEmailRegistrationPolicy, allowedEmailDomains: string): Promise; setPage: React.Dispatch>; setSelectedOAuth: React.Dispatch>; } const AuthenticationIndexPage = ({ originForm, oAuths, isSubmitting, submitError, handleToggleEnabledOAuth, handleToggleEnabledDefaultOAuth, handleDeleteOAuth, handleUpdateTenantSettings, setPage, setSelectedOAuth, }: Props) => { const { register, handleSubmit, formState: { isDirty, isSubmitSuccessful, errors }, setValue, } = useForm({ defaultValues: { emailRegistrationPolicy: originForm.emailRegistrationPolicy, allowedEmailDomains: originForm.allowedEmailDomains, }, }); const onSubmit: SubmitHandler = data => { handleUpdateTenantSettings( data.emailRegistrationPolicy as TenantSettingEmailRegistrationPolicy, data.allowedEmailDomains, ).then(res => { if (res?.status !== HttpStatus.OK) return; window.location.reload(); }); }; const [isDirtyAllowedEmails, setIsDirtyAllowedEmails] = React.useState(false); return ( <>

{ I18n.t('site_settings.authentication.title') }

{ I18n.t('site_settings.authentication.email_registration_subtitle') }

{ originForm.emailRegistrationPolicy === TENANT_SETTING_EMAIL_REGISTRATION_POLICY_CUSTOM_DOMAINS_ALLOWED && <>
{ e.stopPropagation(); setIsDirtyAllowedEmails(e.target.value !== originForm.allowedEmailDomains); }} style={{marginRight: 8}} id="allowedEmailDomains" type="text" className="formControl" />
{ I18n.t('site_settings.authentication.allowed_email_domains_help') }
}

); } export default AuthenticationIndexPage;