hostas2/bin/adduser.php

62 lines
1.7 KiB
PHP
Raw Normal View History

2024-09-01 18:54:41 +00:00
<?php
require_once('./public/config.php');
echo 'Creating new actor. Please fill out the following prompts:' . PHP_EOL;
$name = readline('Name: ');
$preferred_username = readline('Username: ');
$summary = readline('Summary: ');
// We use this link as the user's ID because in ActivityStreams, all IDs
// must be dereferenceable
$id = "https://" . HOSTAS_DOMAIN . "/api/v1/actor/$preferred_username";
$url = readline('Canonical URL (hit enter to generate one): ');
if ($url === '') {
$url = $id;
echo 'Canonical URL: ' . $url . PHP_EOL;
}
$icon_url = readline('Icon URL (hit enter for none): ');
$icon_url = $icon_url === '' ? null : $icon_url;
$conn = new SQLite3(HOSTAS_DATABASE_PATH);
$object_creation_stmt = $conn->prepare("
insert into object(id, type, name, summary, url, icon)
values (:id, 'Person', :name, :summary, :url, :icon);
");
$person_creation_stmt = $conn->prepare("
insert into actor(objectId, preferredUsername)
values (:objectId, :preferredUsername);
");
$object_creation_stmt->bindValue(':id', $id);
$object_creation_stmt->bindValue(':name', $name);
$object_creation_stmt->bindValue(':summary', $summary);
$object_creation_stmt->bindValue(':url', $url);
$object_creation_stmt->bindValue(':icon', $icon_url);
$object_creation_result = $object_creation_stmt->execute();
if (!$object_creation_result) {
echo 'Error: failed to insert object.' . PHP_EOL;
die();
}
$person_creation_stmt->bindValue(':objectId', $id);
$person_creation_stmt->bindValue(':preferredUsername', $preferred_username);
$person_creation_result = $person_creation_stmt->execute();
if (!$person_creation_result) {
echo 'Error: failed to insert person.' . PHP_EOL;
die();
}
echo "Actor with ID $id created successfully!" . PHP_EOL;
$conn->close();