|
|
|
|
@ -734,7 +734,7 @@ class AccountManager implements IAccountManager {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// try the public account lookup API of mastodon
|
|
|
|
|
$response = $client->get("https://{$instance}/api/v1/accounts/lookup?acct={$username}@{$instance}");
|
|
|
|
|
$response = $client->get("https://{$instance}/.well-known/webfinger?resource=acct:{$username}@{$instance}");
|
|
|
|
|
// should be a json response with account information
|
|
|
|
|
$data = $response->getBody();
|
|
|
|
|
if (is_resource($data)) {
|
|
|
|
|
@ -743,7 +743,7 @@ class AccountManager implements IAccountManager {
|
|
|
|
|
$decoded = json_decode($data, true);
|
|
|
|
|
// ensure the username is the same the user passed
|
|
|
|
|
// in this case we can assume this is a valid fediverse server and account
|
|
|
|
|
if (!is_array($decoded) || ($decoded['username'] ?? '') !== $username) {
|
|
|
|
|
if (!is_array($decoded) || ($decoded['subject'] ?? '') !== "acct:{$username}@{$instance}") {
|
|
|
|
|
throw new InvalidArgumentException();
|
|
|
|
|
}
|
|
|
|
|
} catch (InvalidArgumentException) {
|
|
|
|
|
|