mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-29 16:11:23 +08:00
✨ feat(connection): 支持生产连接多项保护策略
- 新增数据编辑、结构编辑、脚本执行和数据导入四类连接级保护配置 - 升级生产连接保护弹窗为多选卡片,并修复选项对齐与勾选态显示 - 按保护类型收口 QueryEditor、DataGrid、表设计、导入与同步目标入口 - 后端统一拦截 SQL 或 Mongo 写操作、结果编辑、结构变更和导入写入 - AI 本地工具与 RPC 执行链路透传连接保护配置并复用后端守卫 - 补充多语言文案、定向测试与需求追踪记录
This commit is contained in:
@@ -751,8 +751,22 @@
|
||||
"connection_modal.field.defaultDatabase.placeholder": "Zum Beispiel: appdb",
|
||||
"connection_modal.field.serviceName.placeholder": "Zum Beispiel: ORCLPDB1",
|
||||
"connection_modal.field.readOnly.label": "Produktionsschutz",
|
||||
"connection_modal.field.readOnly.help": "Wenn aktiviert, sind für diese Verbindung nur Abfragen erlaubt. Import, Schemaänderungen, Schreibvorgänge und die Nutzung als Synchronisationsziel werden blockiert.",
|
||||
"connection_modal.field.readOnly.checkbox": "Diese Verbindung als Produktionsverbindung markieren und nur Abfragen erlauben",
|
||||
"connection_modal.field.readOnly.help": "Select only the restrictions you need for result editing, structure changes, script execution, and import or sync flows.",
|
||||
"connection_modal.field.readOnly.status.enabledCount": "{{count}} restrictions enabled",
|
||||
"connection_modal.field.readOnly.status.disabled": "No restrictions",
|
||||
"connection_modal.field.readOnly.compatibility": "Selecting all options matches the legacy query-only production guard.",
|
||||
"connection_modal.field.readOnly.option.dataEdit.label": "Restrict data edits",
|
||||
"connection_modal.field.readOnly.option.dataEdit.help": "Block result-grid edits, bulk clear actions, and message publishing writes on this connection.",
|
||||
"connection_modal.field.readOnly.option.structureEdit.label": "Restrict structure edits",
|
||||
"connection_modal.field.readOnly.option.structureEdit.help": "Block create, rename, and drop object actions, and open the table designer in read-only mode.",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.label": "Restrict script execution",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.help": "Block mutating SQL statements and MongoDB commands from the query editor.",
|
||||
"connection_modal.field.readOnly.option.dataImport.label": "Restrict data import",
|
||||
"connection_modal.field.readOnly.option.dataImport.help": "Block file import, bulk load, and using this connection as a sync target.",
|
||||
"connection_modal.field.readOnly.summary.title": "Current policy",
|
||||
"connection_modal.field.readOnly.summary.selected": "{{count}} restrictions are enabled. Unchecked abilities still behave like a normal connection.",
|
||||
"connection_modal.field.readOnly.summary.empty": "When no restriction is selected, this connection behaves like a normal connection.",
|
||||
"connection_modal.field.readOnly.tip": "Recommended for production, standby, and governed databases. These restrictions only affect GoNavi behavior for the current connection and do not modify server-side permissions.",
|
||||
"connection_modal.field.clickHouseProtocol.auto": "Automatisch",
|
||||
"connection_modal.field.oceanBaseProtocol.label": "OceanBase-Protokoll",
|
||||
"connection_modal.field.oceanBaseProtocol.help.primary": "Wählen Sie für MySQL-Mandanten MySQL und für Oracle-Mandanten Oracle. GoNavi wählt anhand des Ports automatisch: Für den OB MySQL wire-Port wird die OBClient-Capability-Injektion verwendet (derselbe Pfad wie in Navicat), für den OBProxy Oracle listener-Port Standard-TNS.",
|
||||
@@ -1517,6 +1531,8 @@
|
||||
"connection_modal.config_section.customDsn.description": "Benutzerdefinierter DSN konfigurieren.",
|
||||
"connection_modal.config_section.jvmRuntime.title": "JVM-Laufzeit",
|
||||
"connection_modal.config_section.jvmRuntime.description": "JVM-Laufzeit konfigurieren.",
|
||||
"connection_modal.section.readOnly.title": "Produktionsschutz",
|
||||
"connection_modal.section.readOnly.description": "Choose the high-risk production restrictions you want instead of forcing a single read-only switch.",
|
||||
"connection_modal.field.password": "Passwort",
|
||||
"sidebar.menu.refresh": "Aktualisieren",
|
||||
"sidebar.search.scope.object": "Objekt",
|
||||
|
||||
@@ -751,8 +751,22 @@
|
||||
"connection_modal.field.defaultDatabase.placeholder": "For example: appdb",
|
||||
"connection_modal.field.serviceName.placeholder": "For example: ORCLPDB1",
|
||||
"connection_modal.field.readOnly.label": "Production guard",
|
||||
"connection_modal.field.readOnly.help": "When enabled, this connection only allows queries. Import, schema changes, data writes, and sync target operations are blocked.",
|
||||
"connection_modal.field.readOnly.checkbox": "Mark this as a production connection and allow queries only",
|
||||
"connection_modal.field.readOnly.help": "Select only the restrictions you need for result editing, structure changes, script execution, and import or sync flows.",
|
||||
"connection_modal.field.readOnly.status.enabledCount": "{{count}} restrictions enabled",
|
||||
"connection_modal.field.readOnly.status.disabled": "No restrictions",
|
||||
"connection_modal.field.readOnly.compatibility": "Selecting all options matches the legacy query-only production guard.",
|
||||
"connection_modal.field.readOnly.option.dataEdit.label": "Restrict data edits",
|
||||
"connection_modal.field.readOnly.option.dataEdit.help": "Block result-grid edits, bulk clear actions, and message publishing writes on this connection.",
|
||||
"connection_modal.field.readOnly.option.structureEdit.label": "Restrict structure edits",
|
||||
"connection_modal.field.readOnly.option.structureEdit.help": "Block create, rename, and drop object actions, and open the table designer in read-only mode.",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.label": "Restrict script execution",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.help": "Block mutating SQL statements and MongoDB commands from the query editor.",
|
||||
"connection_modal.field.readOnly.option.dataImport.label": "Restrict data import",
|
||||
"connection_modal.field.readOnly.option.dataImport.help": "Block file import, bulk load, and using this connection as a sync target.",
|
||||
"connection_modal.field.readOnly.summary.title": "Current policy",
|
||||
"connection_modal.field.readOnly.summary.selected": "{{count}} restrictions are enabled. Unchecked abilities still behave like a normal connection.",
|
||||
"connection_modal.field.readOnly.summary.empty": "When no restriction is selected, this connection behaves like a normal connection.",
|
||||
"connection_modal.field.readOnly.tip": "Recommended for production, standby, and governed databases. These restrictions only affect GoNavi behavior for the current connection and do not modify server-side permissions.",
|
||||
"connection_modal.field.clickHouseProtocol.auto": "Auto",
|
||||
"connection_modal.field.oceanBaseProtocol.label": "OceanBase protocol",
|
||||
"connection_modal.field.oceanBaseProtocol.help.primary": "Choose MySQL for MySQL tenants and Oracle for Oracle tenants. GoNavi selects automatically by port: OB MySQL wire ports use OBClient capability injection (the same path as Navicat), while OBProxy Oracle listener ports use standard TNS.",
|
||||
@@ -1525,6 +1539,8 @@
|
||||
"connection_modal.config_section.customDsn.description": "Configure a driver-specific DSN.",
|
||||
"connection_modal.config_section.jvmRuntime.title": "JVM runtime",
|
||||
"connection_modal.config_section.jvmRuntime.description": "Configure JVM access modes and diagnostics.",
|
||||
"connection_modal.section.readOnly.title": "Production guard",
|
||||
"connection_modal.section.readOnly.description": "Choose the high-risk production restrictions you want instead of forcing a single read-only switch.",
|
||||
"connection_modal.field.password": "Password",
|
||||
"sidebar.menu.refresh": "Refresh",
|
||||
"sidebar.search.scope.object": "Object",
|
||||
|
||||
@@ -751,8 +751,22 @@
|
||||
"connection_modal.field.defaultDatabase.placeholder": "例: appdb",
|
||||
"connection_modal.field.serviceName.placeholder": "例: ORCLPDB1",
|
||||
"connection_modal.field.readOnly.label": "本番接続ガード",
|
||||
"connection_modal.field.readOnly.help": "有効にすると、この接続では問い合わせのみ許可されます。インポート、スキーマ変更、データ書き込み、同期先としての利用は拒否されます。",
|
||||
"connection_modal.field.readOnly.checkbox": "この接続を本番接続として扱い、問い合わせのみ許可する",
|
||||
"connection_modal.field.readOnly.help": "Select only the restrictions you need for result editing, structure changes, script execution, and import or sync flows.",
|
||||
"connection_modal.field.readOnly.status.enabledCount": "{{count}} restrictions enabled",
|
||||
"connection_modal.field.readOnly.status.disabled": "No restrictions",
|
||||
"connection_modal.field.readOnly.compatibility": "Selecting all options matches the legacy query-only production guard.",
|
||||
"connection_modal.field.readOnly.option.dataEdit.label": "Restrict data edits",
|
||||
"connection_modal.field.readOnly.option.dataEdit.help": "Block result-grid edits, bulk clear actions, and message publishing writes on this connection.",
|
||||
"connection_modal.field.readOnly.option.structureEdit.label": "Restrict structure edits",
|
||||
"connection_modal.field.readOnly.option.structureEdit.help": "Block create, rename, and drop object actions, and open the table designer in read-only mode.",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.label": "Restrict script execution",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.help": "Block mutating SQL statements and MongoDB commands from the query editor.",
|
||||
"connection_modal.field.readOnly.option.dataImport.label": "Restrict data import",
|
||||
"connection_modal.field.readOnly.option.dataImport.help": "Block file import, bulk load, and using this connection as a sync target.",
|
||||
"connection_modal.field.readOnly.summary.title": "Current policy",
|
||||
"connection_modal.field.readOnly.summary.selected": "{{count}} restrictions are enabled. Unchecked abilities still behave like a normal connection.",
|
||||
"connection_modal.field.readOnly.summary.empty": "When no restriction is selected, this connection behaves like a normal connection.",
|
||||
"connection_modal.field.readOnly.tip": "Recommended for production, standby, and governed databases. These restrictions only affect GoNavi behavior for the current connection and do not modify server-side permissions.",
|
||||
"connection_modal.field.clickHouseProtocol.auto": "自動",
|
||||
"connection_modal.field.oceanBaseProtocol.label": "OceanBase プロトコル",
|
||||
"connection_modal.field.oceanBaseProtocol.help.primary": "MySQL テナントには MySQL、Oracle テナントには Oracle を選択します。GoNavi はポートに応じて自動選択します。OB MySQL wire ポートでは OBClient capability injection(Navicat と同じ経路)を使い、OBProxy Oracle listener ポートでは標準 TNS を使います。",
|
||||
@@ -1517,6 +1531,8 @@
|
||||
"connection_modal.config_section.customDsn.description": "カスタム DSNを設定します。",
|
||||
"connection_modal.config_section.jvmRuntime.title": "JVM ランタイム",
|
||||
"connection_modal.config_section.jvmRuntime.description": "JVM ランタイムを設定します。",
|
||||
"connection_modal.section.readOnly.title": "本番接続ガード",
|
||||
"connection_modal.section.readOnly.description": "Choose the high-risk production restrictions you want instead of forcing a single read-only switch.",
|
||||
"connection_modal.field.password": "パスワード",
|
||||
"sidebar.menu.refresh": "更新",
|
||||
"sidebar.search.scope.object": "オブジェクト",
|
||||
|
||||
@@ -751,8 +751,22 @@
|
||||
"connection_modal.field.defaultDatabase.placeholder": "Например: appdb",
|
||||
"connection_modal.field.serviceName.placeholder": "Например: ORCLPDB1",
|
||||
"connection_modal.field.readOnly.label": "Защита прод-подключения",
|
||||
"connection_modal.field.readOnly.help": "Если включено, для этого подключения разрешены только запросы. Импорт, изменения схемы, запись данных и использование как цели синхронизации будут запрещены.",
|
||||
"connection_modal.field.readOnly.checkbox": "Пометить это подключение как production и разрешить только запросы",
|
||||
"connection_modal.field.readOnly.help": "Select only the restrictions you need for result editing, structure changes, script execution, and import or sync flows.",
|
||||
"connection_modal.field.readOnly.status.enabledCount": "{{count}} restrictions enabled",
|
||||
"connection_modal.field.readOnly.status.disabled": "No restrictions",
|
||||
"connection_modal.field.readOnly.compatibility": "Selecting all options matches the legacy query-only production guard.",
|
||||
"connection_modal.field.readOnly.option.dataEdit.label": "Restrict data edits",
|
||||
"connection_modal.field.readOnly.option.dataEdit.help": "Block result-grid edits, bulk clear actions, and message publishing writes on this connection.",
|
||||
"connection_modal.field.readOnly.option.structureEdit.label": "Restrict structure edits",
|
||||
"connection_modal.field.readOnly.option.structureEdit.help": "Block create, rename, and drop object actions, and open the table designer in read-only mode.",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.label": "Restrict script execution",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.help": "Block mutating SQL statements and MongoDB commands from the query editor.",
|
||||
"connection_modal.field.readOnly.option.dataImport.label": "Restrict data import",
|
||||
"connection_modal.field.readOnly.option.dataImport.help": "Block file import, bulk load, and using this connection as a sync target.",
|
||||
"connection_modal.field.readOnly.summary.title": "Current policy",
|
||||
"connection_modal.field.readOnly.summary.selected": "{{count}} restrictions are enabled. Unchecked abilities still behave like a normal connection.",
|
||||
"connection_modal.field.readOnly.summary.empty": "When no restriction is selected, this connection behaves like a normal connection.",
|
||||
"connection_modal.field.readOnly.tip": "Recommended for production, standby, and governed databases. These restrictions only affect GoNavi behavior for the current connection and do not modify server-side permissions.",
|
||||
"connection_modal.field.clickHouseProtocol.auto": "Авто",
|
||||
"connection_modal.field.oceanBaseProtocol.label": "Протокол OceanBase",
|
||||
"connection_modal.field.oceanBaseProtocol.help.primary": "Для арендаторов MySQL выберите MySQL, для арендаторов Oracle выберите Oracle. GoNavi автоматически выбирает режим по порту: для порта OB MySQL wire используется внедрение возможностей OBClient (тот же путь, что и в Navicat), для порта OBProxy Oracle listener используется стандартный TNS.",
|
||||
@@ -1517,6 +1531,8 @@
|
||||
"connection_modal.config_section.customDsn.description": "Настройте Пользовательский DSN.",
|
||||
"connection_modal.config_section.jvmRuntime.title": "Среда JVM",
|
||||
"connection_modal.config_section.jvmRuntime.description": "Настройте Среда JVM.",
|
||||
"connection_modal.section.readOnly.title": "Защита прод-подключения",
|
||||
"connection_modal.section.readOnly.description": "Choose the high-risk production restrictions you want instead of forcing a single read-only switch.",
|
||||
"connection_modal.field.password": "Пароль",
|
||||
"sidebar.menu.refresh": "Обновить",
|
||||
"sidebar.search.scope.object": "Объект",
|
||||
|
||||
@@ -751,8 +751,22 @@
|
||||
"connection_modal.field.defaultDatabase.placeholder": "例如:appdb",
|
||||
"connection_modal.field.serviceName.placeholder": "例如:ORCLPDB1",
|
||||
"connection_modal.field.readOnly.label": "生产连接保护",
|
||||
"connection_modal.field.readOnly.help": "启用后当前连接仅允许查询,禁止导入、结构变更、数据写入和作为同步目标。",
|
||||
"connection_modal.field.readOnly.checkbox": "标记为生产连接,只允许查询",
|
||||
"connection_modal.field.readOnly.help": "按需勾选限制项,分别限制结果编辑、结构变更、脚本执行与导入/同步。",
|
||||
"connection_modal.field.readOnly.status.enabledCount": "已限制 {{count}} 项",
|
||||
"connection_modal.field.readOnly.status.disabled": "未限制",
|
||||
"connection_modal.field.readOnly.compatibility": "全部勾选时,行为等价于旧版“只允许查询”的生产保护。",
|
||||
"connection_modal.field.readOnly.option.dataEdit.label": "限制数据编辑",
|
||||
"connection_modal.field.readOnly.option.dataEdit.help": "禁止结果集直接修改、批量清空以及消息发布等写入操作。",
|
||||
"connection_modal.field.readOnly.option.structureEdit.label": "限制结构编辑",
|
||||
"connection_modal.field.readOnly.option.structureEdit.help": "禁止新建、重命名、删除数据库对象,并以只读方式打开表设计器。",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.label": "限制脚本执行",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.help": "禁止在 SQL 编辑器执行会产生写入的 SQL 或 MongoDB 命令。",
|
||||
"connection_modal.field.readOnly.option.dataImport.label": "限制数据导入",
|
||||
"connection_modal.field.readOnly.option.dataImport.help": "禁止导入文件、批量装载以及将当前连接作为同步目标。",
|
||||
"connection_modal.field.readOnly.summary.title": "当前策略",
|
||||
"connection_modal.field.readOnly.summary.selected": "已启用 {{count}} 项限制,未勾选的能力仍按普通连接处理。",
|
||||
"connection_modal.field.readOnly.summary.empty": "未选择任何限制项时,此连接按普通连接处理。",
|
||||
"connection_modal.field.readOnly.tip": "推荐用于生产库、备库和受监管环境。限制只影响当前连接在 GoNavi 内的行为,不会修改数据库服务端权限。",
|
||||
"connection_modal.field.clickHouseProtocol.auto": "自动",
|
||||
"connection_modal.field.oceanBaseProtocol.label": "OceanBase 协议",
|
||||
"connection_modal.field.oceanBaseProtocol.help.primary": "MySQL 租户请选择 MySQL;Oracle 租户请选择 Oracle。GoNavi 会根据端口自动选择:OB MySQL wire 端口走 OBClient capability 注入(与 Navicat 相同路径),OBProxy Oracle listener 端口走标准 TNS。",
|
||||
@@ -1525,6 +1539,8 @@
|
||||
"connection_modal.config_section.customDsn.description": "配置驱动专用 DSN。",
|
||||
"connection_modal.config_section.jvmRuntime.title": "JVM 运行时",
|
||||
"connection_modal.config_section.jvmRuntime.description": "配置 JVM 访问模式和诊断能力。",
|
||||
"connection_modal.section.readOnly.title": "生产连接保护",
|
||||
"connection_modal.section.readOnly.description": "按需勾选生产连接的高风险限制项,而不是一刀切只读。",
|
||||
"connection_modal.field.password": "密码",
|
||||
"sidebar.menu.refresh": "刷新",
|
||||
"sidebar.search.scope.object": "对象",
|
||||
|
||||
@@ -751,8 +751,22 @@
|
||||
"connection_modal.field.defaultDatabase.placeholder": "例如:appdb",
|
||||
"connection_modal.field.serviceName.placeholder": "例如:ORCLPDB1",
|
||||
"connection_modal.field.readOnly.label": "正式連線保護",
|
||||
"connection_modal.field.readOnly.help": "啟用後目前連線僅允許查詢,禁止匯入、結構變更、資料寫入與作為同步目標。",
|
||||
"connection_modal.field.readOnly.checkbox": "標記為正式連線,只允許查詢",
|
||||
"connection_modal.field.readOnly.help": "依需求勾選限制項,分別限制結果編輯、結構變更、腳本執行與匯入/同步。",
|
||||
"connection_modal.field.readOnly.status.enabledCount": "已限制 {{count}} 項",
|
||||
"connection_modal.field.readOnly.status.disabled": "未限制",
|
||||
"connection_modal.field.readOnly.compatibility": "全部勾選時,行為等同舊版「只允許查詢」的正式連線保護。",
|
||||
"connection_modal.field.readOnly.option.dataEdit.label": "限制資料編輯",
|
||||
"connection_modal.field.readOnly.option.dataEdit.help": "禁止結果集直接修改、批次清空以及訊息發佈等寫入操作。",
|
||||
"connection_modal.field.readOnly.option.structureEdit.label": "限制結構編輯",
|
||||
"connection_modal.field.readOnly.option.structureEdit.help": "禁止新增、重新命名、刪除資料庫物件,並以唯讀方式開啟表設計器。",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.label": "限制腳本執行",
|
||||
"connection_modal.field.readOnly.option.scriptExecution.help": "禁止在 SQL 編輯器執行會產生寫入的 SQL 或 MongoDB 指令。",
|
||||
"connection_modal.field.readOnly.option.dataImport.label": "限制資料匯入",
|
||||
"connection_modal.field.readOnly.option.dataImport.help": "禁止匯入檔案、批次載入,以及將目前連線作為同步目標。",
|
||||
"connection_modal.field.readOnly.summary.title": "目前策略",
|
||||
"connection_modal.field.readOnly.summary.selected": "已啟用 {{count}} 項限制,未勾選的能力仍依一般連線處理。",
|
||||
"connection_modal.field.readOnly.summary.empty": "未選擇任何限制項時,此連線會依一般連線處理。",
|
||||
"connection_modal.field.readOnly.tip": "建議用於正式庫、備庫與受管制環境。限制只影響目前連線在 GoNavi 內的行為,不會修改資料庫伺服器權限。",
|
||||
"connection_modal.field.clickHouseProtocol.auto": "自動",
|
||||
"connection_modal.field.oceanBaseProtocol.label": "OceanBase 協議",
|
||||
"connection_modal.field.oceanBaseProtocol.help.primary": "MySQL 租戶請選擇 MySQL;Oracle 租戶請選擇 Oracle。GoNavi 會依連接埠自動選擇:OB MySQL wire 連接埠走 OBClient capability 注入(與 Navicat 相同路徑),OBProxy Oracle listener 連接埠走標準 TNS。",
|
||||
@@ -1517,6 +1531,8 @@
|
||||
"connection_modal.config_section.customDsn.description": "設定自訂 DSN。",
|
||||
"connection_modal.config_section.jvmRuntime.title": "JVM 執行階段",
|
||||
"connection_modal.config_section.jvmRuntime.description": "設定JVM 執行階段。",
|
||||
"connection_modal.section.readOnly.title": "正式連線保護",
|
||||
"connection_modal.section.readOnly.description": "依需求勾選正式連線的高風險限制項,而不是一刀切唯讀。",
|
||||
"connection_modal.field.password": "密碼",
|
||||
"sidebar.menu.refresh": "重新整理",
|
||||
"sidebar.search.scope.object": "物件",
|
||||
|
||||
Reference in New Issue
Block a user