Sharing and groups: lookup throttle, reauthentication, member visibility, races (SEC2 B) #998
No reviewers
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo!998
Loading…
Reference in a new issue
No description provided.
Delete branch "sec2-b-sharing-groups"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #943, Closes #944, Closes #945, Closes #946, Closes #947, Closes #948, Closes #989
group:or empty). Email is kept; a hit shows the address as typed. To keep the grants list from revealing the username too, the typed wording is stored on the grant (Share.addressed_as, migration 0040) and shown instead. Miss wording is identical for unknown, deactivated and own address.reauthentication_requiredonPersonActiveView.postandPersonUsernameView.post(GET still opens the form).ownership.movepassesalso_share;MoveViewalso catchesShareRefused.get_or_createin_grant, savepoint around group creation, non-numeric group id is a 404.select_for_update, inside an atomic block) before the last-member check. A concurrent PostgreSQL test is not included; a test asserts the lock is taken.Deviations: the
addressed_ascolumn (a small migration) was needed for the grants list; the PostgreSQL two-connection test for #989 is not written.Tests: new tests in test_share_flow, test_groups_lifecycle, test_hardening_740, security/test_rate_limits; full unit suite passes (translation tests need compiled catalogues). Templates changed (share, groups), not JS; the browser job was not run locally.
🤖 Generated with Claude Code
ae955ebdf8c81f3af99e