From f707714d5ee0f341fc197cbf712b1f526cb51276 Mon Sep 17 00:00:00 2001 From: Wroud Date: Thu, 7 Jul 2022 14:23:50 +0300 Subject: [PATCH] fix(plugin-connections): CB-2208 validate folder field --- webapp/packages/core-connections/src/locales/en.ts | 1 + webapp/packages/core-connections/src/locales/it.ts | 1 + webapp/packages/core-connections/src/locales/ru.ts | 1 + webapp/packages/core-connections/src/locales/zh.ts | 1 + .../Options/ConnectionOptionsTabService.ts | 12 ++++++++++-- 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/webapp/packages/core-connections/src/locales/en.ts b/webapp/packages/core-connections/src/locales/en.ts index d64d539488..8ca9735a2c 100644 --- a/webapp/packages/core-connections/src/locales/en.ts +++ b/webapp/packages/core-connections/src/locales/en.ts @@ -33,6 +33,7 @@ export default [ ['connections_connection_edit_search_hosts', 'Host names'], ['connections_connection_address', 'Address'], ['connections_connection_folder', 'Folder'], + ['connections_connection_folder_validation', 'Folder\'s name may contain the following symbols "_-$.()@" and can\'t start with a dot'], ['connections_connection_name', 'Connection name'], ['connections_connection_access_user_or_role_name', 'User or Role name'], ['connections_connection_access_filter_placeholder', 'Search for user or role name'], diff --git a/webapp/packages/core-connections/src/locales/it.ts b/webapp/packages/core-connections/src/locales/it.ts index a47eb9098a..437374a0f5 100644 --- a/webapp/packages/core-connections/src/locales/it.ts +++ b/webapp/packages/core-connections/src/locales/it.ts @@ -32,6 +32,7 @@ export default [ ['connections_connection_edit_search_hosts', 'Host names'], ['connections_connection_address', 'Indirizzo'], ['connections_connection_folder', 'Folder'], + ['connections_connection_folder_validation', 'Folder\'s name may contain the following symbols "_-$.()@" and can\'t start with a dot'], ['connections_connection_name', 'Nome della connessione'], ['connections_connection_access_user_or_role_name', 'Nome dell\'Utente o del ruolo'], ['connections_connection_access_revoke', 'Revoca'], diff --git a/webapp/packages/core-connections/src/locales/ru.ts b/webapp/packages/core-connections/src/locales/ru.ts index 5ba1734351..2b9e2c5d75 100644 --- a/webapp/packages/core-connections/src/locales/ru.ts +++ b/webapp/packages/core-connections/src/locales/ru.ts @@ -30,6 +30,7 @@ export default [ ['connections_connection_edit_search_hosts', 'Названия хостов'], ['connections_connection_address', 'Адрес'], ['connections_connection_folder', 'Папка'], + ['connections_connection_folder_validation', 'Имя папки может содержать следующие символы "_-$.()@" и не может начинаться с точки'], ['connections_connection_name', 'Название подключения'], ['connections_connection_access_user_or_role_name', 'Имя пользователя или роли'], ['connections_connection_access_filter_placeholder', 'Поиск по имени пользователя или роли'], diff --git a/webapp/packages/core-connections/src/locales/zh.ts b/webapp/packages/core-connections/src/locales/zh.ts index 536e93aa5c..f2f376efa0 100644 --- a/webapp/packages/core-connections/src/locales/zh.ts +++ b/webapp/packages/core-connections/src/locales/zh.ts @@ -33,6 +33,7 @@ export default [ ['connections_connection_edit_search_hosts', '主机名称'], ['connections_connection_address', '地址'], ['connections_connection_folder', 'Folder'], + ['connections_connection_folder_validation', 'Folder\'s name may contain the following symbols "_-$.()@" and can\'t start with a dot'], ['connections_connection_name', '连接名称'], ['connections_connection_access_user_or_role_name', '用户或角色名称'], ['connections_connection_access_filter_placeholder', '搜索用户或角色名称'], diff --git a/webapp/packages/plugin-connections/src/ConnectionForm/Options/ConnectionOptionsTabService.ts b/webapp/packages/plugin-connections/src/ConnectionForm/Options/ConnectionOptionsTabService.ts index 2eb97f4507..942f86d593 100644 --- a/webapp/packages/plugin-connections/src/ConnectionForm/Options/ConnectionOptionsTabService.ts +++ b/webapp/packages/plugin-connections/src/ConnectionForm/Options/ConnectionOptionsTabService.ts @@ -8,7 +8,7 @@ import { action, makeObservable, runInAction, toJS } from 'mobx'; -import { DatabaseAuthModelsResource, DatabaseConnection, DBDriverResource, isJDBCConnection } from '@cloudbeaver/core-connections'; +import { CONNECTION_FOLDER_NAME_VALIDATION, DatabaseAuthModelsResource, DatabaseConnection, DBDriverResource, isJDBCConnection } from '@cloudbeaver/core-connections'; import { Bootstrap, injectable } from '@cloudbeaver/core-di'; import type { IExecutionContextProvider } from '@cloudbeaver/core-executor'; import { CachedMapAllKey, isObjectPropertyInfoStateEqual, ObjectPropertyInfo } from '@cloudbeaver/core-sdk'; @@ -114,6 +114,10 @@ export class ConnectionOptionsTabService extends Bootstrap { if (!state.config.name?.length) { validation.error("Field 'name' can't be empty"); } + + if (state.config.folder && !state.config.folder.match(CONNECTION_FOLDER_NAME_VALIDATION)) { + validation.error('connections_connection_folder_validation'); + } } private fillConfig( @@ -205,7 +209,10 @@ export class ConnectionOptionsTabService extends Bootstrap { tempConfig.description = state.config.description; tempConfig.template = state.config.template; tempConfig.driverId = state.config.driverId; - tempConfig.folder = state.config.folder; + + if (!state.config.template) { + tempConfig.folder = state.config.folder; + } if (isJDBCConnection(driver, state.info)) { tempConfig.url = state.config.url; @@ -273,6 +280,7 @@ export class ConnectionOptionsTabService extends Bootstrap { !isValuesEqual(config.name, data.info.name, '') || !isValuesEqual(config.description, data.info.description, '') || !isValuesEqual(config.template, data.info.template, true) + || !isValuesEqual(config.folder, data.info.folder, undefined) || !isValuesEqual(config.driverId, data.info.driverId, '') || (config.url !== undefined && !isValuesEqual(config.url, data.info.url, '')) || (config.host !== undefined && !isValuesEqual(config.host, data.info.host, ''))