Invitation flow with per-user quota (#332) #334
No reviewers
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#334
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/332-invitations"
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?
Implements #332. Chained on #333 (branched off
feat/331-admin-create-userto avoid the audit-catalogue conflict) - merge #333 first, then this one fast-forwards.invitationstable + migration; token stored as SHA-256 hash, 14-day expiry, single-use (atomic redeem, un-redeem when the gated signup fails so the link survives a taken-username attempt).POST/GET /invitations,DELETE /invitations/:id(AuthenticatedOnly),POST /invitations/preview(@Public, POST keeps the token out of logs).POST /auth/signupacceptsinvitationToken: a valid token passes a CLOSED registration exactly once; the verification mail still applies (a forwarded link proves nothing about the mailbox).invitations.maxOpenPerUser(default 5,0disables inviting -> 403invitations_disabled) counts OPEN (pending, unexpired) invitations; plus a 20/day per-user rate limit against revoke-and-recreate mail loops..table-scrollregion), signup page banner + prefill via?invitation=, admin quota field (flat RHF name per #322, VS-NfD marking/hiding).invitation.*), VS-NfD profile entry (compliant0) + hardening-guide row (fence green), i18n de+en incl. mail template.invitationse2e pack (needs Mailpit like auth) with its own rate-limit reset before it and before the following pack.Merge only on Stefan's go (fast-forward-only, after #333).