Commit 7b189db
committed
Tighten source privacy gates to READ-codename grants (parity with user_can)
Review follow-up that turned out to be a real parity bug, not a docstring
question: the privacy-gate builders matched ANY guardian row on the
source analysis/extract, while user_can recursion resolves READ via the
read codename — so an update_analysis-only grantee saw private rows in
lists while user_can(READ) denied them (the same filter/check violation
class this PR closes elsewhere). visible_analyses_for /
visible_extracts_for now filter permission__codename=read_analysis /
read_extract on both the user- and group-level tables; pinned by
test_update_only_source_grant_does_not_unlock_lists.
Also from the review round:
- _source_privacy_recursion_passes docstring documents the
deleted-source posture (created_by_* FKs are on_delete=SET_NULL, so
deletion turns rows into normal rows; the is-None branch is a
fail-closed race guard, not a permanent lock)
- ExtractManager.user_can carries an equivalence note for its
None/anonymous guard vs the visible_to_user surface
- get_corpus_annotations privacy exclusion now explains at the call
site why it is intentionally unconditional (old anonymous guard was
the leak)
- changelog fragment updated for the grant-shape tightening1 parent eec7f04 commit 7b189db
6 files changed
Lines changed: 74 additions & 13 deletions
File tree
- changelog.d
- opencontractserver
- annotations/services
- extracts
- tests/permissioning
- utils
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
Lines changed: 6 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
743 | 743 | | |
744 | 744 | | |
745 | 745 | | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
746 | 752 | | |
747 | 753 | | |
748 | 754 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
224 | 224 | | |
225 | 225 | | |
226 | 226 | | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
227 | 231 | | |
228 | 232 | | |
229 | 233 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
674 | 674 | | |
675 | 675 | | |
676 | 676 | | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
677 | 684 | | |
678 | 685 | | |
679 | 686 | | |
| |||
Lines changed: 37 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1667 | 1667 | | |
1668 | 1668 | | |
1669 | 1669 | | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
| 1697 | + | |
| 1698 | + | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
| 1702 | + | |
| 1703 | + | |
| 1704 | + | |
| 1705 | + | |
| 1706 | + | |
1670 | 1707 | | |
1671 | 1708 | | |
1672 | 1709 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
27 | 32 | | |
28 | 33 | | |
29 | 34 | | |
| |||
54 | 59 | | |
55 | 60 | | |
56 | 61 | | |
57 | | - | |
58 | | - | |
59 | | - | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
60 | 65 | | |
61 | | - | |
| 66 | + | |
| 67 | + | |
62 | 68 | | |
63 | 69 | | |
64 | 70 | | |
| |||
102 | 108 | | |
103 | 109 | | |
104 | 110 | | |
105 | | - | |
106 | | - | |
107 | | - | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
108 | 114 | | |
109 | | - | |
| 115 | + | |
| 116 | + | |
110 | 117 | | |
111 | 118 | | |
112 | 119 | | |
| |||
0 commit comments