From 99c172b24de2476f296d529967d85762e5a063d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E6=A1=A5=E5=87=89=E4=BB=8B?= <113153113+HighBigSky@users.noreply.github.com> Date: Mon, 21 Sep 2026 11:36:34 +0800 Subject: [PATCH] feat(users): visual database and table level grants for MySQL --- .../admin/AuthorizationScopeEditor.vue | 328 +++++++++++++++++ .../components/admin/DatabaseUserAdmin.vue | 341 +++++------------- apps/desktop/src/i18n/locales/az.ts | 5 + apps/desktop/src/i18n/locales/en.ts | 5 + apps/desktop/src/i18n/locales/es.ts | 5 + apps/desktop/src/i18n/locales/it.ts | 5 + apps/desktop/src/i18n/locales/ja.ts | 5 + apps/desktop/src/i18n/locales/ko.ts | 5 + apps/desktop/src/i18n/locales/pt-BR.ts | 5 + apps/desktop/src/i18n/locales/tr.ts | 5 + apps/desktop/src/i18n/locales/zh-CN.ts | 5 + apps/desktop/src/i18n/locales/zh-TW.ts | 5 + .../DatabaseUserAdmin.component.spec.ts | 87 ++++- .../databaseAuthorizationPlan.spec.ts | 55 ++- .../lib/database/databaseAuthorizationPlan.ts | 53 ++- 15 files changed, 643 insertions(+), 271 deletions(-) create mode 100644 apps/desktop/src/components/admin/AuthorizationScopeEditor.vue diff --git a/apps/desktop/src/components/admin/AuthorizationScopeEditor.vue b/apps/desktop/src/components/admin/AuthorizationScopeEditor.vue new file mode 100644 index 0000000000..6aedf794d3 --- /dev/null +++ b/apps/desktop/src/components/admin/AuthorizationScopeEditor.vue @@ -0,0 +1,328 @@ + + + + + + + {{ t("userAdmin.databaseAccess") }} + {{ t("userAdmin.databaseAccessHint") }} + + {{ t("userAdmin.selectedDatabaseCount", { count: modelValue.length }) }} + + + + + + + + + + {{ t("userAdmin.loadingDatabases") }} + + {{ t("userAdmin.emptyDatabases") }} + + + + + {{ database === GLOBAL_SCOPE ? t("userAdmin.globalScope") : database }} + + + + + {{ t("userAdmin.presetReadWrite") }} + {{ t("userAdmin.presetReadOnly") }} + {{ t("userAdmin.presetDdl") }} + {{ t("userAdmin.presetDml") }} + {{ t("userAdmin.presetCustom") }} + + + + + + {{ t("userAdmin.tableScope") }} + + + {{ t("userAdmin.allTables") }} + + + {{ t("userAdmin.specificTables") }} + + + + + + + + + {{ selectionFor(database)?.tables?.length ? t("userAdmin.selectedTableCount", { count: selectionFor(database)?.tables?.length }) : t("userAdmin.chooseTables") }} + + + + + + + + + + + + + {{ t(allTablesSelected(database) ? "userAdmin.clearAllTables" : "userAdmin.selectAllTables") }} + + + + + + {{ t("userAdmin.loadingTables") }} + + + {{ t("userAdmin.loadTablesFailed", { message: tableErrors[database] }) }} + {{ t("userAdmin.retry") }} + + + {{ t("userAdmin.emptyTables") }} + + + + + + {{ table }} + + + + + + + {{ t("userAdmin.tableSelectionRequired") }} + + + + + {{ privilege }} + + + {{ t("userAdmin.customPrivilegeRequired") }} + + + + {{ t("userAdmin.postgresDdlHint") }} + + + + + diff --git a/apps/desktop/src/components/admin/DatabaseUserAdmin.vue b/apps/desktop/src/components/admin/DatabaseUserAdmin.vue index 931cc4cc4f..475567af6a 100644 --- a/apps/desktop/src/components/admin/DatabaseUserAdmin.vue +++ b/apps/desktop/src/components/admin/DatabaseUserAdmin.vue @@ -1,14 +1,14 @@ @@ -789,7 +721,7 @@ onMounted(loadUsers);
{{ t("userAdmin.loadTablesFailed", { message: tableErrors[database] }) }}
+ {{ t("userAdmin.tableSelectionRequired") }} +
+ {{ t("userAdmin.customPrivilegeRequired") }} +
+ {{ t("userAdmin.postgresDdlHint") }} +