Skip to content

Story Share portal: anonymous public story submission #2144

Description

@maebeale

Context

The Story Share portal (/story_shares) now has a signed-in "Share your story" page that reuses the existing StoryIdea flow (see the portal-parity PR). This mirrors the live WordPress site's /share/ form in spirit, but the WP form is fully anonymous — any visitor can submit without an account.

Our StoryIdea model can't be anonymous today: it requires a created_by User and an organization_id drawn from the submitter's own organizations.

What's needed for anonymous submission

  • Add submitter identity columns to story_ideas (e.g. submitter_name, submitter_email, free-text submitter_organization) so a story can be attributed without a User/Organization record.
  • Attribute anonymous submissions to a system/sentinel user (or make created_by optional with a guard).
  • Relax StoryIdeaPolicy#new?/create? to allow guests for the portal route only (keep the admin index/show gated).
  • Spam protection (reCAPTCHA/hCaptcha or honeypot + rate limiting) — the WP form is reCAPTCHA-gated.
  • Consent checkbox matching the WP form's permission language.
  • Moderation: anonymous submissions land in the existing admin review queue; titles are editorial (the WP form has no title field).

Parity notes (from stories.awbw.org research)

  • WP /share/ fields: first/last name, name-display preference (full / first-only / hide), email (not published), organization (free text), state (free text), workshop name, featured image/video, YouTube URL, story body, additional images, category checkboxes (sectors), audience checkboxes, consent checkbox. No title.
  • WP's anonymity is a real privacy bug (full name is in the HTML, hidden with CSS; email is exposed via the open REST API). Our version must handle credit server-side via AuthorCreditable and never render or expose hidden identity.

Out of scope

Signed-in submission already ships in the portal-parity work; this issue covers only the anonymous path.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requeststoriesIssues related to stories feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions