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

pierrejeambrun pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-1-test by this push:
     new 4912581b587 [v3-1-test] Fix backfill permissions (#62856) (#62873)
4912581b587 is described below

commit 4912581b58794b60f6107a33c636628b8c5491bb
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Mar 4 15:44:06 2026 +0100

    [v3-1-test] Fix backfill permissions (#62856) (#62873)
    
    * Fix backfill permissions
    
    * Fix CI
    (cherry picked from commit 5cfb58c7de36550dd34370ca261dc936d528a938)
    
    Co-authored-by: Pierre Jeambrun <[email protected]>
---
 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 4e2d7f6c7ce..4215baaa771 100644
--- a/airflow-core/src/airflow/api_fastapi/core_api/security.py
+++ b/airflow-core/src/airflow/api_fastapi/core_api/security.py
@@ -279,8 +279,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 ccd9f53ea2f..7e63705a1a9 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
@@ -268,7 +268,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()
@@ -332,7 +332,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")
@@ -363,7 +363,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