====== Players ======
===== How players are made =====
When the hub first sees ''[TAG]Name'' it:
- makes a Synchronet user on your door BBS called ''Name (TAG)'' (Synchronet allows 25 characters, so long names are shortened, and a number is added if two players would get the same name);
- gives that user a random password that only the hub knows;
- remembers the player's password from their BBS, as a bcrypt hash.
Each session the hub runs ''mkuser.js'' with ''jsexec'' to make sure the user exists and has the right password. If you delete a hub user in Synchronet, it's simply made again next time, with a fresh start in every game.
Users made by the hub have the comment set by ''new_user_comment'' (default "Door Hub player"), so they're easy to find in your user editor. They get your BBS's normal new-user settings, with ANSI and colour turned on.
===== Commands =====
doorhub player list [TAG] players, newest first
doorhub player reset "[TAG]Name" forget the player's password from their BBS
$ doorhub player list
PLAYER DOOR-BBS USER FIRST SEEN LAST SEEN PLAYS
[KAL]Heisenberg Heisenberg (KAL) 2026-11-09 10:42 2026-11-09 11:40 lord:3 seal:1
===== Player passwords =====
Member BBSes send a password for each caller (''doorhub.js'' makes a random one per caller). The hub keeps the first one it sees for each name. If a different password arrives later for the same ''[TAG]Name'', the hub refuses it with "Your Door Hub password doesn't match".
This stops a new caller who takes an old caller's name on a member BBS from playing as them. When a member rebuilds their user base, or a caller's BBS account is recreated, reset the player:
doorhub player reset "[KAL]Heisenberg"
The next password that arrives for that name is kept.
===== Names =====
* Up to 30 characters, printable ASCII. Names with ''['' or '']'' are refused.
* Names are matched without regard to capitals: ''[KAL]heisenberg'' is the same player as ''[KAL]Heisenberg''.
* The game sees the door BBS user name (''Heisenberg (KAL)''). Many doors also let players choose their own name inside the game.