diff --git a/client/src/components/ui/Guide/MobileConfigForm.js b/client/src/components/ui/Guide/MobileConfigForm.js index ce9a6942..f726b40c 100644 --- a/client/src/components/ui/Guide/MobileConfigForm.js +++ b/client/src/components/ui/Guide/MobileConfigForm.js @@ -14,7 +14,7 @@ import { toNumber, } from '../../../helpers/form'; import { - validateClientId, + validateConfigClientId, validateServerName, validatePort, validateIsSafePort, @@ -132,7 +132,7 @@ const MobileConfigForm = ({ invalid }) => { component={renderInputField} className="form-control" placeholder={i18next.t('client_id_placeholder')} - validate={validateClientId} + validate={validateConfigClientId} />
diff --git a/client/src/helpers/constants.js b/client/src/helpers/constants.js index f9431cf6..195efdb3 100644 --- a/client/src/helpers/constants.js +++ b/client/src/helpers/constants.js @@ -24,7 +24,7 @@ export const R_UNIX_ABSOLUTE_PATH = /^(\/[^/\x00]+)+$/; // eslint-disable-next-line no-control-regex export const R_WIN_ABSOLUTE_PATH = /^([a-zA-Z]:)?(\\|\/)(?:[^\\/:*?"<>|\x00]+\\)*[^\\/:*?"<>|\x00]*$/; -export const R_CLIENT_ID = /^[a-z0-9-]{1,64}$/; +export const R_CLIENT_ID = /^[a-z0-9-]{1,63}$/; export const HTML_PAGES = { INSTALL: '/install.html', diff --git a/client/src/helpers/validators.js b/client/src/helpers/validators.js index 25a7168d..7075ca47 100644 --- a/client/src/helpers/validators.js +++ b/client/src/helpers/validators.js @@ -83,6 +83,21 @@ export const validateClientId = (value) => { return undefined; }; +/** + * @param value {string} + * @returns {undefined|string} + */ +export const validateConfigClientId = (value) => { + if (!value) { + return undefined; + } + const formattedValue = value.trim(); + if (formattedValue && !R_CLIENT_ID.test(formattedValue)) { + return 'form_error_client_id_format'; + } + return undefined; +}; + /** * @param value {string} * @returns {undefined|string}