Invite flow: multi-member onboarding — single-use vs reusable link #60
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
Problem
The current invite implementation has one active link per household, single-use (status set to
"used"on accept). This creates a usability gap: a planner who wants to invite multiple people simultaneously either has to wait for each person to accept (or 48h to expire) before inviting the next, or regenerate the link (invalidating the previous one).Questions to resolve
Security note (from Sable)
Single-use is the least-privilege option — a leaked link can only be misused once. Reusable links expand the blast radius of a leak (anyone with the link can join until expiry or until the planner regenerates). If reusable links are chosen, rate limiting on the accept endpoint becomes more important.
Current state
HouseholdService.acceptInvite()marksstatus = "used"on accept → strictly single-use. The/memberspage allows the planner to regenerate the link, which invalidates the old one.Out of scope here
Implementation — this issue is for product decision only. Came up during discussion of #21.