From b7e94975fb11db5f37cc7ba2b43ed8d84a3cbc6d Mon Sep 17 00:00:00 2001 From: Stepan Date: Wed, 27 Mar 2024 17:37:43 +0300 Subject: [PATCH 1/8] fix(chore): Removed hardcode of admin role from permission utils --- superset-frontend/src/dashboard/util/permissionUtils.ts | 6 ++---- superset/config.py | 3 +-- superset/views/base.py | 1 + 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/superset-frontend/src/dashboard/util/permissionUtils.ts b/superset-frontend/src/dashboard/util/permissionUtils.ts index 6cccad905d95..29f224d56435 100644 --- a/superset-frontend/src/dashboard/util/permissionUtils.ts +++ b/superset-frontend/src/dashboard/util/permissionUtils.ts @@ -25,16 +25,14 @@ import { import { Dashboard } from 'src/types/Dashboard'; import { findPermission } from 'src/utils/findPermission'; -// this should really be a config value, -// but is hardcoded in backend logic already, so... -const ADMIN_ROLE_NAME = 'admin'; +const ADMIN_ROLE_NAME = window.adminRole; export const isUserAdmin = ( user?: UserWithPermissionsAndRoles | UndefinedUser, ) => isUserWithPermissionsAndRoles(user) && Object.keys(user.roles || {}).some( - role => role.toLowerCase() === ADMIN_ROLE_NAME, + role => role.toLowerCase() === ADMIN_ROLE_NAME.toLowerCase(), ); const isUserDashboardOwner = ( diff --git a/superset/config.py b/superset/config.py index fdfdbbda5133..3c2f819f7edc 100644 --- a/superset/config.py +++ b/superset/config.py @@ -460,8 +460,7 @@ def _try_json_readsha(filepath: str, length: int) -> str | None: # AUTH_REMOTE_USER : Is for using REMOTE_USER from web server AUTH_TYPE = AUTH_DB -# Uncomment to setup Full admin role name -# AUTH_ROLE_ADMIN = 'Admin' +AUTH_ROLE_ADMIN = "Admin" # Uncomment to setup Public role name, no authentication needed # AUTH_ROLE_PUBLIC = 'Public' diff --git a/superset/views/base.py b/superset/views/base.py index aa069d69b232..414c2af4fe28 100644 --- a/superset/views/base.py +++ b/superset/views/base.py @@ -73,6 +73,7 @@ from .utils import bootstrap_user_data, get_config_value FRONTEND_CONF_KEYS = ( + "AUTH_ROLE_ADMIN", "SUPERSET_WEBSERVER_TIMEOUT", "SUPERSET_DASHBOARD_POSITION_DATA_LIMIT", "SUPERSET_DASHBOARD_PERIODICAL_REFRESH_LIMIT", From 65424d5a42e19bd98a7dba90637b0ccb049ca3be Mon Sep 17 00:00:00 2001 From: Stepan Date: Wed, 27 Mar 2024 18:20:22 +0300 Subject: [PATCH 2/8] added adminRole type to Window --- .../packages/superset-ui-core/src/utils/featureFlags.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts b/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts index 35c0a37d562e..0a5128601b5a 100644 --- a/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts +++ b/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts @@ -97,6 +97,7 @@ export type FeatureFlagMap = { declare global { interface Window { featureFlags: FeatureFlagMap; + adminRole: string; } } From 997291371f0375a04f0c375f28a524ba130555e8 Mon Sep 17 00:00:00 2001 From: Stepan Date: Wed, 27 Mar 2024 19:00:56 +0300 Subject: [PATCH 3/8] fix tests cases that can't read adminRole --- superset-frontend/src/dashboard/util/permissionUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset-frontend/src/dashboard/util/permissionUtils.ts b/superset-frontend/src/dashboard/util/permissionUtils.ts index 29f224d56435..0b7407c7235b 100644 --- a/superset-frontend/src/dashboard/util/permissionUtils.ts +++ b/superset-frontend/src/dashboard/util/permissionUtils.ts @@ -25,7 +25,7 @@ import { import { Dashboard } from 'src/types/Dashboard'; import { findPermission } from 'src/utils/findPermission'; -const ADMIN_ROLE_NAME = window.adminRole; +const ADMIN_ROLE_NAME = window.adminRole || 'Admin'; export const isUserAdmin = ( user?: UserWithPermissionsAndRoles | UndefinedUser, From cc20ec837c66732503adff26b57daa7794b4f043 Mon Sep 17 00:00:00 2001 From: Stepan <66589759+Always-prog@users.noreply.github.com> Date: Tue, 2 Apr 2024 15:26:48 +0300 Subject: [PATCH 4/8] comment AUTH_ROLE_ADMIN --- superset/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset/config.py b/superset/config.py index 3c2f819f7edc..c04b4da62f07 100644 --- a/superset/config.py +++ b/superset/config.py @@ -460,7 +460,7 @@ def _try_json_readsha(filepath: str, length: int) -> str | None: # AUTH_REMOTE_USER : Is for using REMOTE_USER from web server AUTH_TYPE = AUTH_DB -AUTH_ROLE_ADMIN = "Admin" +# AUTH_ROLE_ADMIN = "Admin" # Uncomment to setup Public role name, no authentication needed # AUTH_ROLE_PUBLIC = 'Public' From 3fb09545163bbb47a5ee0fd41509bbd56b62dba8 Mon Sep 17 00:00:00 2001 From: Stepan Date: Wed, 3 Apr 2024 11:32:48 +0300 Subject: [PATCH 5/8] moved adminRole to shim --- superset-frontend/spec/helpers/shim.tsx | 1 + superset-frontend/src/dashboard/util/permissionUtils.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) mode change 100644 => 100755 superset-frontend/spec/helpers/shim.tsx diff --git a/superset-frontend/spec/helpers/shim.tsx b/superset-frontend/spec/helpers/shim.tsx old mode 100644 new mode 100755 index 0bff723e4ca0..6aa943795634 --- a/superset-frontend/spec/helpers/shim.tsx +++ b/superset-frontend/spec/helpers/shim.tsx @@ -55,6 +55,7 @@ g.window.Worker ??= Worker; g.window.IntersectionObserver ??= IntersectionObserver; g.window.ResizeObserver ??= ResizeObserver; g.window.featureFlags ??= {}; +g.window.adminRole ??= 'Admin'; g.URL.createObjectURL ??= () => ''; g.caches = new CacheStorage(); diff --git a/superset-frontend/src/dashboard/util/permissionUtils.ts b/superset-frontend/src/dashboard/util/permissionUtils.ts index 0b7407c7235b..29f224d56435 100644 --- a/superset-frontend/src/dashboard/util/permissionUtils.ts +++ b/superset-frontend/src/dashboard/util/permissionUtils.ts @@ -25,7 +25,7 @@ import { import { Dashboard } from 'src/types/Dashboard'; import { findPermission } from 'src/utils/findPermission'; -const ADMIN_ROLE_NAME = window.adminRole || 'Admin'; +const ADMIN_ROLE_NAME = window.adminRole; export const isUserAdmin = ( user?: UserWithPermissionsAndRoles | UndefinedUser, From 2baff80eef495c505018d99c07c5ef56bf7c78ed Mon Sep 17 00:00:00 2001 From: Stepan Date: Mon, 15 Apr 2024 19:25:15 +0300 Subject: [PATCH 6/8] using admin role from bootstrap --- .../packages/superset-ui-core/src/utils/featureFlags.ts | 1 - superset-frontend/spec/helpers/shim.tsx | 1 - superset-frontend/src/dashboard/util/permissionUtils.ts | 4 +++- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts b/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts index 0a5128601b5a..35c0a37d562e 100644 --- a/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts +++ b/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts @@ -97,7 +97,6 @@ export type FeatureFlagMap = { declare global { interface Window { featureFlags: FeatureFlagMap; - adminRole: string; } } diff --git a/superset-frontend/spec/helpers/shim.tsx b/superset-frontend/spec/helpers/shim.tsx index 6aa943795634..0bff723e4ca0 100755 --- a/superset-frontend/spec/helpers/shim.tsx +++ b/superset-frontend/spec/helpers/shim.tsx @@ -55,7 +55,6 @@ g.window.Worker ??= Worker; g.window.IntersectionObserver ??= IntersectionObserver; g.window.ResizeObserver ??= ResizeObserver; g.window.featureFlags ??= {}; -g.window.adminRole ??= 'Admin'; g.URL.createObjectURL ??= () => ''; g.caches = new CacheStorage(); diff --git a/superset-frontend/src/dashboard/util/permissionUtils.ts b/superset-frontend/src/dashboard/util/permissionUtils.ts index 29f224d56435..66f312e38b87 100644 --- a/superset-frontend/src/dashboard/util/permissionUtils.ts +++ b/superset-frontend/src/dashboard/util/permissionUtils.ts @@ -24,8 +24,10 @@ import { } from 'src/types/bootstrapTypes'; import { Dashboard } from 'src/types/Dashboard'; import { findPermission } from 'src/utils/findPermission'; +import getBootstrapData from 'src/utils/getBootstrapData'; -const ADMIN_ROLE_NAME = window.adminRole; +const bootstrapData = getBootstrapData(); +const ADMIN_ROLE_NAME = bootstrapData.common.conf.AUTH_ROLE_ADMIN; export const isUserAdmin = ( user?: UserWithPermissionsAndRoles | UndefinedUser, From 95ef7ccb69b611281013a95c5849d029b6d943b3 Mon Sep 17 00:00:00 2001 From: Stepan Date: Mon, 3 Jun 2024 14:02:34 +0300 Subject: [PATCH 7/8] default value for admin role at the frontend --- superset-frontend/src/dashboard/util/permissionUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset-frontend/src/dashboard/util/permissionUtils.ts b/superset-frontend/src/dashboard/util/permissionUtils.ts index 66f312e38b87..dac221b3d4c7 100644 --- a/superset-frontend/src/dashboard/util/permissionUtils.ts +++ b/superset-frontend/src/dashboard/util/permissionUtils.ts @@ -27,7 +27,7 @@ import { findPermission } from 'src/utils/findPermission'; import getBootstrapData from 'src/utils/getBootstrapData'; const bootstrapData = getBootstrapData(); -const ADMIN_ROLE_NAME = bootstrapData.common.conf.AUTH_ROLE_ADMIN; +const ADMIN_ROLE_NAME = bootstrapData.common.conf.AUTH_ROLE_ADMIN || 'Admin'; export const isUserAdmin = ( user?: UserWithPermissionsAndRoles | UndefinedUser, From 828cc5e214c4617d3f2655ca25918acc50d3f00b Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 5 Jul 2026 14:41:40 -0700 Subject: [PATCH 8/8] chore: revert accidental file-mode change on shim.tsx Co-Authored-By: Claude Opus 4.8 --- superset-frontend/spec/helpers/shim.tsx | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 superset-frontend/spec/helpers/shim.tsx diff --git a/superset-frontend/spec/helpers/shim.tsx b/superset-frontend/spec/helpers/shim.tsx old mode 100755 new mode 100644