[admin|user] * php tools/make-user.php --list */ require __DIR__ . '/../api/lib/AtomicFile.php'; require __DIR__ . '/../api/lib/UserStore.php'; $file = dirname(__DIR__) . '/data/users.json'; $store = new UserStore($file); $args = array_slice($argv, 1); if (($args[0] ?? '') === '--list') { foreach ($store->accounts() as $account) { echo $account['username'], ' ', $account['role'], "\n"; } exit(0); } if (count($args) < 2 || count($args) > 3 || $args[0] === '' || $args[1] === '') { fwrite(STDERR, "Usage: php tools/make-user.php [admin|user]\n"); exit(2); } [$username, $password] = $args; $role = $args[2] ?? null; if (!UserStore::isValidName($username)) { fwrite(STDERR, "Invalid user name: {$username}\n"); exit(2); } if ($role !== null && !UserStore::isValidRole($role)) { fwrite(STDERR, "Unknown role: {$role} (admin or user)\n"); exit(2); } $existed = $store->exists($username); $store->put($username, $password, $role); echo ($existed ? 'password set for ' : 'created '), $username, ' (', $store->role($username), ")\n";