PIN-based authentication
Each temporary scorer gets a 4-digit numeric PIN paired with the tournament's 6-character alphanumeric code. The scorer enters the code and PIN on the mobile app to start a scoring session. PINs are bcrypt-hashed before storage — the plaintext is shown once to the tournament owner and never stored.
4-digit numeric PIN (range 1000–9999), shown once on creation
6-character tournament code from a clean alphabet (confusing characters I, O, 0, 1 removed)
PINs stored as bcrypt hashes with 10 rounds of salt
PIN reset available: generates new PIN and invalidates all existing sessions