From 7408668dbb7a468b65d2514dd668ea3bf600d7a9 Mon Sep 17 00:00:00 2001 From: Oscar Zhou <100548325+oscarzhou-portainer@users.noreply.github.com> Date: Wed, 13 Dec 2023 23:20:09 +1300 Subject: [PATCH] fix(setting/ssl): cert files are optional to upload [EE-6139] (#10779) --- .../SSLSettingsPanel/SSLSettingsPanel.tsx | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/app/react/portainer/settings/SettingsView/SSLSettingsPanel/SSLSettingsPanel.tsx b/app/react/portainer/settings/SettingsView/SSLSettingsPanel/SSLSettingsPanel.tsx index a9917f201..1d4227322 100644 --- a/app/react/portainer/settings/SettingsView/SSLSettingsPanel/SSLSettingsPanel.tsx +++ b/app/react/portainer/settings/SettingsView/SSLSettingsPanel/SSLSettingsPanel.tsx @@ -20,8 +20,8 @@ import { useUpdateSSLConfigMutation } from '../useUpdateSSLConfigMutation'; import { useSSLSettings } from '../../queries/useSSLSettings'; interface FormValues { - certFile: File | null; - keyFile: File | null; + certFile?: File; + keyFile?: File; forceHTTPS: boolean; } @@ -37,8 +37,8 @@ function SSLSettingsPanel() { } const initialValues: FormValues = { - certFile: null, - keyFile: null, + certFile: undefined, + keyFile: undefined, forceHTTPS: !settingsQuery.data.httpEnabled, }; @@ -52,7 +52,7 @@ function SSLSettingsPanel() { validationSchema={validation} validateOnMount > - {({ values, setFieldValue, isValid, errors }) => ( + {({ values, setFieldValue, isValid, errors, dirty }) => (
@@ -92,7 +92,6 @@ function SSLSettingsPanel() { errors={errors.certFile} > setFieldValue('certFile', file)} @@ -107,7 +106,6 @@ function SSLSettingsPanel() { errors={errors.keyFile} > setFieldValue('keyFile', file)} @@ -119,7 +117,7 @@ function SSLSettingsPanel() {
@@ -135,16 +133,12 @@ function SSLSettingsPanel() { ); function handleSubmit({ certFile, forceHTTPS, keyFile }: FormValues) { - if (!certFile || !keyFile) { - return; - } - mutation.mutate( { certFile, httpEnabled: !forceHTTPS, keyFile }, { async onSuccess() { await new Promise((resolve) => { - setTimeout(resolve, 5000); + setTimeout(resolve, 10000); }); window.location.reload(); setReloadingPage(true); @@ -156,10 +150,13 @@ function SSLSettingsPanel() { function validation(): SchemaOf { return object({ - certFile: withFileExtension(file(), ['pem', 'crt', 'cer', 'cert']).required( - '' - ), - keyFile: withFileExtension(file(), ['pem', 'key']).required(''), + certFile: withFileExtension(file(), [ + 'pem', + 'crt', + 'cer', + 'cert', + ]).optional(), + keyFile: withFileExtension(file(), ['pem', 'key']).optional(), forceHTTPS: bool().required(), }); }