This is an automated email from the ASF dual-hosted git repository.

vavila pushed a commit to branch feat/async-db-perm-sync
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 0d876432b3a5179f410961a27de2fc7e58631838
Author: Vitor Avila <[email protected]>
AuthorDate: Fri Feb 7 19:08:12 2025 -0300

    Changing order
---
 superset/commands/database/resync_permissions.py | 11 ++++-------
 superset/tasks/permissions.py                    | 11 +++++++----
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/superset/commands/database/resync_permissions.py 
b/superset/commands/database/resync_permissions.py
index f72920518c..0f0b44f55a 100644
--- a/superset/commands/database/resync_permissions.py
+++ b/superset/commands/database/resync_permissions.py
@@ -54,13 +54,10 @@ class ResyncPermissionsCommand(BaseCommand):
         if not self._model:
             raise DatabaseNotFoundError()
 
-        # If OAuth2 connection, we need to impersonate
-        # the current user to trigger the resync
-        if self._model.is_oauth2_enabled():
-            if not self._username:
-                raise UserNotFoundError()
-            if not security_manager.get_user_by_username(self._username):
-                raise UserNotFoundError()
+        if not self._username or not security_manager.get_user_by_username(
+            self._username
+        ):
+            raise UserNotFoundError()
 
         # Make sure the connection works before delegating the task
         def ping(engine: Engine) -> bool:
diff --git a/superset/tasks/permissions.py b/superset/tasks/permissions.py
index 902cd11a59..4aef3bd457 100644
--- a/superset/tasks/permissions.py
+++ b/superset/tasks/permissions.py
@@ -29,16 +29,19 @@ logger = logging.getLogger(__name__)
 
 
 @celery_app.task(name="resync_database_permissions", soft_time_limit=600)
-def resync_database_permissions(database_id: int, username: str | None) -> 
None:
+def resync_database_permissions(database_id: int, username: str) -> None:
     logger.info("Resyncing permissions for DB connection ID %s", database_id)
+    if user := security_manager.get_user_by_username(username):
+        g.user = user
+        logger.info("Impersonating user ID %s", g.user.id)
+    else:
+        logger.error("No user to impersonate/validate permissions")
+        return
     database = DatabaseDAO.find_by_id(database_id)
     ssh_tunnel = DatabaseDAO.get_ssh_tunnel(database_id)
     if not database:
         logger.error("Database ID %s not found", database_id)
         return
-    if username and (user := security_manager.get_user_by_username(username)):
-        g.user = user
-        logger.info("Impersonating user ID %s", g.user.id)
     cmmd = UpdateDatabaseCommand(database_id, {})
     try:
         cmmd._refresh_catalogs(database, database.name, ssh_tunnel)

Reply via email to