Skip to content

[syed.atyab@codeline.rihal.om] Edit-My-Feedback Kiosk MVP #2

Description

@CodelineAtyab

User Story – Secure Editing of In-Store Feedback

As a returning customer using the in-store feedback kiosk,
I want to securely edit only my own previously submitted feedback
by entering my consumer number and a masked 4-digit PIN,
so that I can correct mistakes without exposing my data or someone else’s.


Acceptance Criteria

1. UI / UX

  • The kiosk displays an “Edit My Feedback” button only after at least one feedback has been submitted that day.
  • When tapped, the customer is prompted for:
    • Consumer Number (text field)
    • 4-digit PIN (input masked with •)

2. Backend Workflow

# Action Details / Rules
1 Receive credentials consumer_number + masked PIN
2 Retrieve feedback Lookup by UUIDv4 feedback_id and customer_id
3 Verify PIN Compare supplied PIN to bcrypt hash (never store raw digits)
4 Authorise Exactly one match: load feedback into editor.
No / multiple matches: show “Details not recognised.”

3. Security & Authorisation

  • Customers can edit only their own feedback; cross-customer edits return HTTP 403 – Forbidden.
  • Users with the admin role may edit any feedback without PIN verification.
  • No plain-text PINs may appear in source, logs, or DB dumps.
  • All feedback keeps its original UUIDv4; no collisions allowed.

4. Reference CLI Implementation (in repo)

  1. Dictionary-based in-memory storage keyed by feedback UUID.
  2. Masked PIN entry via Python’s getpass.
  3. bcrypt hashing for PINs.
  4. Positive & negative unit tests demonstrating expected behaviour.

5. Documentation

  • Explains why UUIDv4 was chosen over random integers.
  • Lists adopted security best practices (masking, hashing, key separation, etc.).

Additional Non-Functional Notes

  • Accessibility: Masked input remains screen-reader friendly.
  • Performance: PIN verification finishes in < 200 ms.
  • Auditability: Each edit logs timestamp, anonymised customer_id, and feedback_id.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions