Update Inbox handler, add Reject Follow support

pull/5881/head
Daniel Supernault 3 weeks ago
parent 3725c689e4
commit fbe76e37f3
No known key found for this signature in database
GPG Key ID: 23740873EE6F76A1

@ -43,6 +43,7 @@ use App\Util\ActivityPub\Validator\Announce as AnnounceValidator;
use App\Util\ActivityPub\Validator\Follow as FollowValidator;
use App\Util\ActivityPub\Validator\Like as LikeValidator;
use App\Util\ActivityPub\Validator\MoveValidator;
use App\Util\ActivityPub\Validator\RejectValidator;
use App\Util\ActivityPub\Validator\UpdatePersonValidator;
use Cache;
use Illuminate\Support\Facades\Bus;
@ -121,6 +122,9 @@ class Inbox
break;
case 'Reject':
if (RejectValidator::validate($this->payload) == false) {
return;
}
$this->handleRejectActivity();
break;
@ -854,7 +858,21 @@ class Inbox
}
public function handleRejectActivity() {}
public function handleRejectActivity()
{
$actorUrl = $this->payload['actor'];
$obj = $this->payload['object'];
$profileUrl = $obj['actor'];
if (! Helpers::validateUrl($actorUrl) || ! Helpers::validateLocalUrl($profileUrl)) {
return;
}
$actor = Helpers::profileFetch($actorUrl);
$profile = Helpers::profileFetch($profileUrl);
FollowRequest::whereFollowerId($profile->id)->whereFollowingId($actor->id)->forceDelete();
RelationshipService::refresh($actor->id, $profile->id);
}
public function handleUndoActivity()
{

@ -0,0 +1,31 @@
<?php
namespace App\Util\ActivityPub\Validator;
use Illuminate\Validation\Rule;
use Validator;
class RejectValidator
{
public static function validate($payload)
{
$valid = Validator::make($payload, [
'@context' => 'required',
'id' => 'required|string',
'type' => [
'required',
Rule::in(['Reject']),
],
'actor' => 'required|url',
'object.id' => 'required|url',
'object.actor' => 'required|url',
'object.object' => 'required|url',
'object.type' => [
'required',
Rule::in(['Follow']),
],
])->passes();
return $valid;
}
}
Loading…
Cancel
Save