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()