Skip to content

WHATSAPP-002 — Link a verified WhatsApp number and versioned consent to a member UID #87

Description

@daliu

Outcome

If WHATSAPP-001 selects one-to-one Cloud API use, let a signed-in member prove control of a WhatsApp number and record narrowly scoped consent.

Scope

  • Generate a one-time server code sent through an approved authentication template.
  • Hash the code; make it short-lived, one-use, rate/attempt limited, and App Check protected.
  • Normalize phone/WhatsApp identifiers server-side and prevent silent multi-UID ownership.
  • Record versioned consent separately for access/admin notices and optional announcements/marketing.
  • Provide opt-out, reassignment/recovery, deletion, and audited conflict handling.

Acceptance criteria

  • WhatsApp proof links only a channel; it never authenticates Firebase or grants membership/discounts.
  • Wrong, expired, replayed, enumerated, duplicate-phone, abuse, opt-out, and recovery paths are tested in sandbox/emulators.
  • Codes, phone values, tokens, and provider bodies never appear in logs/errors/issues.
  • No production message is sent by local or CI tests.
  • Template/category use and consent comply with the owner-approved policy.

Dependencies

#85 must select Cloud API; #81; coordinating backlog AUTH-001 and ABUSE-001.

Official references

Coordination

Parent: #79

Do not begin implementation until dependencies are complete, this issue is assigned, and a timestamped CLAIMED comment naming the agent and branch is posted. Creation of this ticket is not a claim. Preserve the parallel agent work tracked by stable IDs in GITHUB_ISSUES.md.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:authAuthentication and authorizationarea:membershipMembership lifecycle and reconciliationarea:whatsappWhatsApp integrationneeds-external-configRequires provider console or external configurationpriority:P1High-priority follow-upsize:MMedium multi-file issuestatus:proposedDesigned but dependencies or decisions remaintype:featureProduct capability

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions