Use app access for owned job routes
This commit is contained in:
parent
a5000542e0
commit
2d5c244606
2 changed files with 7 additions and 8 deletions
|
|
@ -1012,8 +1012,7 @@ def create_app():
|
|||
elif path == "/api/jobs" and request.method.upper() == "POST":
|
||||
subject = access_controller.require_request_capability(request, "queue_submit")
|
||||
elif path.startswith("/api/jobs/"):
|
||||
capability = "job_cancel_own" if request.method.upper() == "DELETE" else "job_read_own"
|
||||
subject = resolve_job_subject(capability)
|
||||
subject = resolve_job_subject("app_access")
|
||||
elif path in {"/app", "/app/"}:
|
||||
if access_controller.runtime.enabled and access_controller.runtime.required:
|
||||
subject = access_controller.require_request_capability(request, "app_access")
|
||||
|
|
@ -1111,7 +1110,7 @@ def create_app():
|
|||
if job is None:
|
||||
raise HTTPException(status_code=404, detail="Unknown job")
|
||||
try:
|
||||
access_controller.require_current_job_access(job, "job_read_own")
|
||||
access_controller.require_current_job_access(job, "app_access")
|
||||
except AccessDenied as exc:
|
||||
raise HTTPException(status_code=exc.status_code, detail=exc.detail) from exc
|
||||
payload = manager.get_job_state_payload(job_id)
|
||||
|
|
@ -1186,7 +1185,7 @@ def create_app():
|
|||
if job is None:
|
||||
raise HTTPException(status_code=404, detail="Unknown job")
|
||||
try:
|
||||
access_controller.require_current_job_access(job, "job_read_own")
|
||||
access_controller.require_current_job_access(job, "app_access")
|
||||
except AccessDenied as exc:
|
||||
raise HTTPException(status_code=exc.status_code, detail=exc.detail) from exc
|
||||
payload = manager.heartbeat(job_id)
|
||||
|
|
@ -1199,7 +1198,7 @@ def create_app():
|
|||
if job is None:
|
||||
raise HTTPException(status_code=404, detail="Unknown job")
|
||||
try:
|
||||
access_controller.require_current_job_access(job, "job_cancel_own")
|
||||
access_controller.require_current_job_access(job, "app_access")
|
||||
except AccessDenied as exc:
|
||||
raise HTTPException(status_code=exc.status_code, detail=exc.detail) from exc
|
||||
payload = manager.cancel_job(job_id, "Canceled because the browser left or explicitly bailed.")
|
||||
|
|
@ -1212,7 +1211,7 @@ def create_app():
|
|||
if job is None:
|
||||
raise HTTPException(status_code=404, detail="Unknown job")
|
||||
try:
|
||||
access_controller.require_current_job_access(job, "job_read_own")
|
||||
access_controller.require_current_job_access(job, "app_access")
|
||||
except AccessDenied as exc:
|
||||
raise HTTPException(status_code=exc.status_code, detail=exc.detail) from exc
|
||||
|
||||
|
|
|
|||
|
|
@ -908,7 +908,7 @@ def test_gui_job_routes_enforce_bound_subject_ownership(monkeypatch, tmp_path: P
|
|||
account_id="acct-1",
|
||||
session_id="sess-1",
|
||||
access_revision=4,
|
||||
capabilities=frozenset({"queue_submit", "job_read_own", "job_cancel_own"}),
|
||||
capabilities=frozenset({"app_access", "queue_submit"}),
|
||||
auth_mode="trusted-header",
|
||||
)
|
||||
with bind_access_subject(subject):
|
||||
|
|
@ -936,7 +936,7 @@ def test_gui_job_routes_enforce_bound_subject_ownership(monkeypatch, tmp_path: P
|
|||
account_id="acct-2",
|
||||
session_id="sess-2",
|
||||
access_revision=8,
|
||||
capabilities=frozenset({"job_read_own"}),
|
||||
capabilities=frozenset({"app_access"}),
|
||||
auth_mode="trusted-header",
|
||||
)
|
||||
with bind_access_subject(intruder):
|
||||
|
|
|
|||
Loading…
Reference in a new issue