Cert creation fixes

This commit is contained in:
Jamie Curnow 2023-03-05 22:37:34 +10:00
parent cc9d556665
commit 6df4ea4d69
No known key found for this signature in database
GPG Key ID: FFBB624C43388E9E
3 changed files with 30 additions and 13 deletions

View File

@ -14,12 +14,14 @@ interface SelectOption extends OptionBase {
} }
interface DomainNamesFieldProps { interface DomainNamesFieldProps {
maxDomains?: number; maxDomains?: number;
isWildcardSupported?: boolean; isWildcardPermitted?: boolean;
dnsProviderWildcardSupported?: boolean;
onChange?: (i: string[]) => any; onChange?: (i: string[]) => any;
} }
function DomainNamesField({ function DomainNamesField({
maxDomains, maxDomains,
isWildcardSupported, isWildcardPermitted,
dnsProviderWildcardSupported,
onChange, onChange,
}: DomainNamesFieldProps) { }: DomainNamesFieldProps) {
const { values, setFieldValue } = useFormikContext(); const { values, setFieldValue } = useFormikContext();
@ -45,7 +47,10 @@ function DomainNamesField({
} }
// Prevent wildcards // Prevent wildcards
if (!isWildcardSupported && dom.indexOf("*") !== -1) { if (
(!isWildcardPermitted || !dnsProviderWildcardSupported) &&
dom.indexOf("*") !== -1
) {
return false; return false;
} }
@ -71,6 +76,18 @@ function DomainNamesField({
setFieldValue("domainNames", doms); setFieldValue("domainNames", doms);
}; };
let helperTexts: string[] = [];
if (maxDomains) {
helperTexts.push(
intl.formatMessage({ id: "domain_names.max" }, { count: maxDomains }),
);
}
if (!isWildcardPermitted) {
helperTexts.push(intl.formatMessage({ id: "wildcards-not-permitted" }));
} else if (!dnsProviderWildcardSupported) {
helperTexts.push(intl.formatMessage({ id: "wildcards-not-supported" }));
}
return ( return (
<Field name="domainNames"> <Field name="domainNames">
{({ field, form }: any) => ( {({ field, form }: any) => (
@ -91,14 +108,11 @@ function DomainNamesField({
isMulti isMulti
placeholder="example.com" placeholder="example.com"
/> />
{maxDomains ? ( {helperTexts.length
<FormHelperText> ? helperTexts.map((i) => {
{intl.formatMessage( return <FormHelperText>{i}</FormHelperText>;
{ id: "domain_names.max" }, })
{ count: maxDomains }, : null}
)}
</FormHelperText>
) : null}
<FormErrorMessage>{form.errors.domainNames}</FormErrorMessage> <FormErrorMessage>{form.errors.domainNames}</FormErrorMessage>
</FormControl> </FormControl>
)} )}

View File

@ -23,7 +23,8 @@ function DNSForm() {
<CertificateAuthorityField onChange={handleCAChange} /> <CertificateAuthorityField onChange={handleCAChange} />
<DomainNamesField <DomainNamesField
maxDomains={maxDomains} maxDomains={maxDomains}
isWildcardSupported={isWildcardSupported} dnsProviderWildcardSupported={isWildcardSupported}
isWildcardPermitted /* true for DNS certs */
/> />
<DNSProviderField /> <DNSProviderField />
<EccField /> <EccField />

View File

@ -22,7 +22,9 @@ function HTTPForm() {
<CertificateAuthorityField onChange={handleCAChange} /> <CertificateAuthorityField onChange={handleCAChange} />
<DomainNamesField <DomainNamesField
maxDomains={maxDomains} maxDomains={maxDomains}
isWildcardSupported={isWildcardSupported} dnsProviderWildcardSupported={
isWildcardSupported
} /* technically not applicable for HTTP certs */
/> />
<EccField /> <EccField />
</> </>