This is an automated email from the ASF dual-hosted git repository. aminghadersohi pushed a commit to branch work-pr-39604 in repository https://gitbox.apache.org/repos/asf/superset.git
commit 85da5d227a4ef8729efde0d7baeb2eef22972173 Author: Amin Ghadersohi <[email protected]> AuthorDate: Fri May 8 14:47:58 2026 -0400 fix(security): drop redundant explicit ApiKey perm creation ``superset init`` calls ``appbuilder.add_permissions(update_perms=True)`` before ``sync_role_definitions()`` (cli/main.py:84), which forces FAB to walk all registered baseviews — including ``ApiKeyApi`` (registered when ``FAB_API_KEY_ENABLED=True``) — and create their PVMs via ``add_permissions_view``. The explicit ``add_permission_view_menu`` calls in ``create_custom_permissions`` were redundant. With ``"ApiKey"`` already in ``ADMIN_ONLY_VIEW_MENUS``, the role predicate ``_is_admin_only`` gates the auto-created PVMs to Admin. Per Daniel Gaspar's review: "Adding ApiKey to ADMIN_ONLY_VIEW_MENUS should just work when FAB_API_KEY_ENABLED is True". --- superset/security/manager.py | 9 --------- 1 file changed, 9 deletions(-) diff --git a/superset/security/manager.py b/superset/security/manager.py index 19a8cf8c522..5da6e9ced97 100644 --- a/superset/security/manager.py +++ b/superset/security/manager.py @@ -1426,15 +1426,6 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods self.add_permission_view_menu("can_tag", "Chart") self.add_permission_view_menu("can_tag", "Dashboard") - # API Key permissions (FAB's ApiKeyApi blueprint). - # Superset uses AppBuilder(update_perms=False) so FAB skips - # permission creation during blueprint registration. Create them - # explicitly here so that ``superset init`` picks them up and - # sync_role_definitions assigns them to the Admin role. - if current_app.config.get("FAB_API_KEY_ENABLED", False): - for perm in ("can_list", "can_create", "can_get", "can_delete"): - self.add_permission_view_menu(perm, "ApiKey") - def create_missing_perms(self) -> None: """ Creates missing FAB permissions for datasources, schemas and metrics.
