← All tests

R1.3.1 — Cashier picker + manager override on Lock screen LOCAL

2026-04-22. Two gaps in R1.3 closed in one cycle, both flagged in QA:
(1) PIN-collision: two cashiers sharing a random 4-digit PIN. Fix — two-step Lock screen (cashier tile picker → PIN keypad), verify PIN against the explicitly chosen identity only.
(2) Store Manager / Owner couldn't unlock registers (only PIN identities could). Fix — a "Unlock as {web-user}" button on the Lock screen, visible only to users with nix_cafe.pos.session_open permission. Spec §8.7 allows manager override via "separate login" — the existing web session counts. No PIN needed.

2/2 local Gate 1 checks passed. Verified: DAO list + collision-safe verify — created two cashiers with the same PIN "4321" on the same shop, plus one null-shop cashier. Picker returns all three; unmapped-register picker returns only the null-shop one; verifyPinForIdentity by Alice's id resolves to Alice (not Bob), and by Bob's id resolves to Bob. Deactivated cashier disappears from picker and fails verify even with correct PIN. HTTP smoke on /cafe/pos/register/1 still 307.
Gate 2 (prod) will capture both flows. Screenshots planned: (a) Lock screen with Manager override button + cashier tile grid; (b) click cashier tile → PIN keypad with cashier badge; (c) click Manager override → straight to PreShift (no PIN). Plus DB assertion that the cafe.sessions row records opened_by_user_id (not opened_by_pin_id) when the manager path is used.

00What's new in the codebase

01DAO — picker list + collision-safe verify✓ 11 assertions

Loading…