USRSE / USRSE/usrse.github.io

feat(admin): submissions JSON payload exposure — document sensitive-data guidance

Open
#2,015 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
HTML
Stars
33
Forks
104
Avg merge
12h 3m
Merged PRs (30d)
10

Description

Summary

GET /admin/forms/:id/submissions returns the raw payload jsonb for each submission. If a form author ever captures sensitive data (medical questions, contact info, etc.), this surfaces unredacted to anyone who can access the form's admin detail page (staff + the form author).

Requirements

  • Decide whether to add a staff_only_submissions boolean column on forms (only staff with systemTier >= 2 see payloads when true) OR rely entirely on form scope for access control
  • If keeping current behavior, document in the spec §5 that form authors must use `scope='staff_only'` for sensitive data
  • Consider per-field marking in the schema (e.g., `sensitive: true` on a field) that triggers payload redaction on the JSON list (but not CSV export which staff can already access)

Context

Plan 4 review follow-up. Not a v1 blocker; raised because forms are the first artifact where user-submitted payloads bear on this question.

Files

  • packages/api/src/routes/admin/forms/submissions.ts (JSON list response shape)
  • packages/api/src/lib/forms/schemaTypes.ts (if adding per-field sensitive marker)
  • docs/superpowers/specs/2026-05-20-events-announcements-forms-design.md §5

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read §5 of docs/superpowers/specs/2026-05-20-events-announcements-forms-design.md alongside the submissions response in packages/api/src/routes/admin/forms/submissions.ts. If per-field sensitivity remains in scope, inspect packages/api/src/lib/forms/schemaTypes.ts. Done means the access-control or redaction decision is resolved and the spec documents the resulting guidance.

Written by the indexing model from the issue text.

Assessment

Tech stack
postgresql, typescript
Domain
api, backend, documentation, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.