Account deletion could work now.
This commit is contained in:
parent
72c3a62e7f
commit
6020605d5c
3 changed files with 43 additions and 4 deletions
|
@ -57,7 +57,6 @@ use Friendica\Core\Config;
|
||||||
* - Undo Accept (Problem: This could invert a contact accept or an event accept)
|
* - Undo Accept (Problem: This could invert a contact accept or an event accept)
|
||||||
*
|
*
|
||||||
* Transmitter:
|
* Transmitter:
|
||||||
* - Delete (Application, Group, Organization, Person, Service)
|
|
||||||
* - Event
|
* - Event
|
||||||
*
|
*
|
||||||
* Complicated:
|
* Complicated:
|
||||||
|
@ -441,9 +440,13 @@ class ActivityPub
|
||||||
{
|
{
|
||||||
$inboxes = [];
|
$inboxes = [];
|
||||||
|
|
||||||
$contacts = DBA::select('contact', ['notify', 'batch'], ['uid' => $uid,
|
$condition = ['uid' => $uid, 'network' => Protocol::ACTIVITYPUB, 'archive' => false, 'pending' => false];
|
||||||
'rel' => [Contact::FOLLOWER, Contact::FRIEND], 'network' => Protocol::ACTIVITYPUB,
|
|
||||||
'archive' => false, 'pending' => false]);
|
if (!empty($uid)) {
|
||||||
|
$condition['rel'] = [Contact::FOLLOWER, Contact::FRIEND];
|
||||||
|
}
|
||||||
|
|
||||||
|
$contacts = DBA::select('contact', ['notify', 'batch'], $condition);
|
||||||
while ($contact = DBA::fetch($contacts)) {
|
while ($contact = DBA::fetch($contacts)) {
|
||||||
$contact = defaults($contact, 'batch', $contact['notify']);
|
$contact = defaults($contact, 'batch', $contact['notify']);
|
||||||
$inboxes[$contact] = $contact;
|
$inboxes[$contact] = $contact;
|
||||||
|
@ -731,6 +734,32 @@ class ActivityPub
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Transmits a profile deletion to a given inbox
|
||||||
|
*
|
||||||
|
* @param integer $uid User ID
|
||||||
|
* @param string $inbox Target inbox
|
||||||
|
*/
|
||||||
|
public static function transmitProfileDeletion($uid, $inbox)
|
||||||
|
{
|
||||||
|
$owner = User::getOwnerDataById($uid);
|
||||||
|
$profile = APContact::getByURL($owner['url']);
|
||||||
|
|
||||||
|
$data = ['@context' => 'https://www.w3.org/ns/activitystreams',
|
||||||
|
'id' => System::baseUrl() . '/activity/' . System::createGUID(),
|
||||||
|
'type' => 'Delete',
|
||||||
|
'actor' => $owner['url'],
|
||||||
|
'object' => self::profile($uid),
|
||||||
|
'published' => DateTimeFormat::utcNow(DateTimeFormat::ATOM),
|
||||||
|
'to' => [self::PUBLIC_COLLECTION],
|
||||||
|
'cc' => []];
|
||||||
|
|
||||||
|
$signed = LDSignature::sign($data, $owner);
|
||||||
|
|
||||||
|
logger('Deliver profile deletion for user ' . $uid . ' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
|
||||||
|
HTTPSignature::transmit($signed, $inbox, $uid);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Transmits a profile change to a given inbox
|
* @brief Transmits a profile change to a given inbox
|
||||||
*
|
*
|
||||||
|
|
|
@ -18,6 +18,8 @@ class APDelivery extends BaseObject
|
||||||
if ($cmd == Delivery::MAIL) {
|
if ($cmd == Delivery::MAIL) {
|
||||||
} elseif ($cmd == Delivery::SUGGESTION) {
|
} elseif ($cmd == Delivery::SUGGESTION) {
|
||||||
} elseif ($cmd == Delivery::RELOCATION) {
|
} elseif ($cmd == Delivery::RELOCATION) {
|
||||||
|
} elseif ($cmd == Delivery::REMOVAL) {
|
||||||
|
ActivityPub::transmitProfileDeletion($uid, $inbox);
|
||||||
} elseif ($cmd == Delivery::PROFILEUPDATE) {
|
} elseif ($cmd == Delivery::PROFILEUPDATE) {
|
||||||
ActivityPub::transmitProfileUpdate($uid, $inbox);
|
ActivityPub::transmitProfileUpdate($uid, $inbox);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -99,6 +99,14 @@ class Notifier
|
||||||
foreach ($r as $contact) {
|
foreach ($r as $contact) {
|
||||||
Contact::terminateFriendship($user, $contact, true);
|
Contact::terminateFriendship($user, $contact, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$inboxes = ActivityPub::fetchTargetInboxesforUser(0);
|
||||||
|
foreach ($inboxes as $inbox) {
|
||||||
|
logger('Account removal for user ' . $uid . ' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
|
||||||
|
Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
|
||||||
|
'APDelivery', Delivery::REMOVAL, '', $inbox, $uid);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
} elseif ($cmd == Delivery::RELOCATION) {
|
} elseif ($cmd == Delivery::RELOCATION) {
|
||||||
$normal_mode = false;
|
$normal_mode = false;
|
||||||
|
|
Loading…
Reference in a new issue