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

pierrejeambrun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 5cfb58c7de3 Fix backfill permissions (#62856)
5cfb58c7de3 is described below

commit 5cfb58c7de36550dd34370ca261dc936d528a938
Author: Pierre Jeambrun <[email protected]>
AuthorDate: Wed Mar 4 14:46:24 2026 +0100

    Fix backfill permissions (#62856)
    
    * Fix backfill permissions
    
    * Fix CI
---
 airflow-core/src/airflow/api_fastapi/core_api/security.py     | 9 +++++++--
 airflow-core/tests/unit/api_fastapi/core_api/test_security.py | 6 +++---
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/airflow-core/src/airflow/api_fastapi/core_api/security.py 
b/airflow-core/src/airflow/api_fastapi/core_api/security.py
index 188ee168693..0e59fb3550c 100644
--- a/airflow-core/src/airflow/api_fastapi/core_api/security.py
+++ b/airflow-core/src/airflow/api_fastapi/core_api/security.py
@@ -297,8 +297,13 @@ def requires_access_backfill(
         dag_id = None
 
         # Try to retrieve the dag_id from the backfill_id path param
-        backfill_id = request.path_params.get("backfill_id")
-        if backfill_id is not None and isinstance(backfill_id, int):
+        backfill_id_raw = request.path_params.get("backfill_id")
+        try:
+            backfill_id = int(backfill_id_raw) if backfill_id_raw is not None 
else None
+        except ValueError:
+            backfill_id = None
+
+        if backfill_id is not None:
             backfill = session.scalars(select(Backfill).where(Backfill.id == 
backfill_id)).one_or_none()
             dag_id = backfill.dag_id if backfill else None
 
diff --git a/airflow-core/tests/unit/api_fastapi/core_api/test_security.py 
b/airflow-core/tests/unit/api_fastapi/core_api/test_security.py
index 9b599a41c5c..e5cb5f17cf9 100644
--- a/airflow-core/tests/unit/api_fastapi/core_api/test_security.py
+++ b/airflow-core/tests/unit/api_fastapi/core_api/test_security.py
@@ -269,7 +269,7 @@ class TestFastApiSecurity:
         session.scalars.return_value.one_or_none.return_value = backfill
 
         request = Mock()
-        request.path_params = {"backfill_id": 42}
+        request.path_params = {"backfill_id": "42"}
         request.json = AsyncMock(return_value={})
 
         user = Mock()
@@ -333,7 +333,7 @@ class TestFastApiSecurity:
         session.scalars.return_value.one_or_none.return_value = backfill
 
         request = Mock()
-        request.path_params = {"backfill_id": 1}
+        request.path_params = {"backfill_id": "1"}
         user = Mock()
 
         inner = requires_access_backfill("GET")
@@ -364,7 +364,7 @@ class TestFastApiSecurity:
         session.scalars.return_value.one_or_none.return_value = None
 
         request = Mock()
-        request.path_params = {"backfill_id": 999}
+        request.path_params = {"backfill_id": "999"}
         request.json = AsyncMock(return_value={"dag_id": "fallback_dag_id"})
 
         user = Mock()

Reply via email to