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
The following commit(s) were added to refs/heads/feat/async-db-perm-sync by
this push:
new e9102c32b0 Changing order
e9102c32b0 is described below
commit e9102c32b0c3a209b6af9e4305d74c9bccfcdb3e
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)