Scanning devices (event page)
The panel on an event that lists the phones and laptops scanning for it, and where each one is pointed.
Who opens it: an organizer with checkin.manage_devices (Owner, Admin) — the evening before, handing out phones,
and on the day when one goes missing or a gate needs another.
What they came to do: get a phone scanning at the right place in under a minute, and move or stop one remotely.
What must be true when they leave: every phone that can scan is one they added, pointed at a check-in point and a day they chose, and a lost one scans nothing.
Decided
- Add device → a 6-character pairing code, valid for 10 minutes, shown once in a notification and in the list while it lasts. The letters avoid 0/O and 1/I/L, because codes are read aloud at a gate. An expired code is replaced with "New pairing code".
- Pairing needs a signed-in member who may scan, typing the code on the phone. A code overheard by a stranger is useless without an account; attempts are limited to 10 a minute.
- Re-pin, don't re-pair. Moving a phone to another check-in point or day happens from here; the phone picks it up within a minute (day two of IV Day is a re-pin).
- Revoke is final. The phone's next request is refused as revoked, so it uploads what it holds and then locks. A lost phone is revoked and a new device added.
- Someone has to be accountable for where scans happen (L18): a member with no group cannot scan on a device that is not pinned to a check-in point.
- Unlock code (week 20, a paired device at a Kiosk point with
kiosk_modeon): six digits shown once, valid ten minutes and for one use, that take the kiosk to the staff screen (hold its top-left corner for three seconds). Kept only as a keyed hash; issuing and using one are audited (device.kiosk_unlock_issued,device.kiosk_unlocked). - Last seen and version come from the phone's own requests; an old version is refused scans until it reloads.
Open
- The scanner PWA's pairing screen is week 9.
- Devices are not group-scoped: a group lead does not manage devices.