Skip to content

feat(backend): for public hackathons make participant pages public - #296

Draft
sabinem wants to merge 1 commit into
mainfrom
feat/public-pages
Draft

feat(backend): for public hackathons make participant pages public#296
sabinem wants to merge 1 commit into
mainfrom
feat/public-pages

Conversation

@sabinem

@sabinem sabinem commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

For public hackathons make member pages accessible to the public.

A private hackathon can only be joined with a valid invitation (or by
someone who already holds hackathon:read), so the organizer has already
decided who takes part by the time Join runs. Asking for a second
confirmation left the invitee holding no casbin role, which meant the
event they had just been invited to was filtered out of every list they
could see — the invitation link was the only trace of it.

Join now grants membership itself when the hackathon is private. Public
hackathons are unchanged: there the door stood open to everyone, which
makes the organizer's confirmation the only point at which anybody
chooses.

- Extracts the shared confirmation into grantMembership, used by both
  Join and ApproveParticipant. It adds the Member role *before* clearing
  is_waiting, reversing ApproveParticipant's old order: casbin cannot
  join an ent transaction, and a half-failure that shows someone as
  waitlisted-but-able-to-act is repairable by the Approve button, where
  the reverse leaves a roster saying "Approved" over an account with no
  read access and no control that fixes it.
- Auto-approval failure is logged, not returned. It leaves exactly the
  state a public join produces, which the invite page already reads
  correctly.
- Extracts Join's invite-token gate into inviteAdmits, which the feature
  needed to stay under the cyclomatic limit and which retires two
  nolint directives.
- The invite page now says "Join" rather than "Request a place" for a
  private hackathon. Kept conditional on visibility: CreateInvite
  performs no visibility check, so a public hackathon's link still
  waitlists.
- H5's seeded waitlist moves out of the fixture; dana is now a confirmed
  member and the waitlist-to-approve case lives in H1, which is public.
@sabinem sabinem changed the title feat(backend): private hackathons confirm their joiners on the spot feat(backend): for public hackathons make participant pages public Sep 10, 2026
@sabinem
sabinem marked this pull request as draft September 10, 2026 06:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant