Commit e75944f
Use a dedicated permission class for BurpRawRequestResponseViewSet
The top-level /api/v2/request_response_pairs/ viewset reused
UserHasFindingRelatedObjectPermission, which is shaped for
@action(detail=True) endpoints where DRF resolves the parent finding
from the URL. On a top-level POST there is no parent object resolved
yet, so the create flow only ran has_object_permission against the
not-yet-saved row and effectively skipped any check on the
client-supplied "finding" foreign key.
Introduce UserHasBurpRawRequestResponsePermission, which validates
the parent finding against Finding_Edit on POST via
check_post_permission, mirroring the pattern already used by
UserHasFindingPermission, UserHasProductPermission, and the other
parent-keyed viewsets. has_object_permission dereferences obj.finding
for retrieve/update/delete so list/detail/PUT/PATCH/DELETE behavior
is unchanged.
Add regression coverage in unittests/test_rest_framework.py asserting
the positive control still works, that an authenticated user without
membership cannot create a pair on a hidden finding, and that POSTs
missing the finding key are rejected.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent b70c293 commit e75944f
3 files changed
Lines changed: 78 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
455 | 455 | | |
456 | 456 | | |
457 | 457 | | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
458 | 475 | | |
459 | 476 | | |
460 | 477 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3011 | 3011 | | |
3012 | 3012 | | |
3013 | 3013 | | |
3014 | | - | |
| 3014 | + | |
3015 | 3015 | | |
3016 | 3016 | | |
3017 | 3017 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1788 | 1788 | | |
1789 | 1789 | | |
1790 | 1790 | | |
| 1791 | + | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
| 1799 | + | |
| 1800 | + | |
| 1801 | + | |
| 1802 | + | |
| 1803 | + | |
| 1804 | + | |
| 1805 | + | |
| 1806 | + | |
| 1807 | + | |
| 1808 | + | |
| 1809 | + | |
| 1810 | + | |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
| 1826 | + | |
| 1827 | + | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
| 1832 | + | |
| 1833 | + | |
| 1834 | + | |
| 1835 | + | |
| 1836 | + | |
| 1837 | + | |
| 1838 | + | |
| 1839 | + | |
| 1840 | + | |
| 1841 | + | |
| 1842 | + | |
| 1843 | + | |
| 1844 | + | |
| 1845 | + | |
| 1846 | + | |
| 1847 | + | |
| 1848 | + | |
| 1849 | + | |
| 1850 | + | |
1791 | 1851 | | |
1792 | 1852 | | |
1793 | 1853 | | |
| |||
0 commit comments