From 2cf3011816f6659daff1ad6452f6d637fe9cc823 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Wed, 19 Mar 2025 03:14:54 -0600 Subject: [PATCH] Update ApiV1Controller, send UndoFollow when cancelling a follow request on remote accounts --- app/Http/Controllers/Api/ApiV1Controller.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index b16aad735..2c6fba91b 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -813,13 +813,13 @@ class ApiV1Controller extends Controller abort_unless($request->user()->tokenCan('follow'), 403); $user = $request->user(); + abort_if($user->profile_id == $id, 400, 'Invalid profile'); + abort_if($user->has_roles && ! UserRoleService::can('can-follow', $user->id), 403, 'Invalid permissions for this action'); AccountService::setLastActive($user->id); - $target = Profile::where('id', '!=', $user->profile_id) - ->whereNull('status') - ->findOrFail($id); + $target = Profile::whereNull('status')->findOrFail($id); abort_if($target && $target->moved_to_profile_id, 400, 'Cannot follow an account that has moved!'); @@ -914,10 +914,11 @@ class ApiV1Controller extends Controller $user = $request->user(); + abort_if($user->profile_id == $id, 400, 'Invalid profile'); + AccountService::setLastActive($user->id); - $target = Profile::where('id', '!=', $user->profile_id) - ->whereNull('status') + $target = Profile::whereNull('status') ->findOrFail($id); $private = (bool) $target->is_private; @@ -934,6 +935,9 @@ class ApiV1Controller extends Controller if ($followRequest) { $followRequest->delete(); RelationshipService::refresh($target->id, $user->profile_id); + if ($target->domain) { + UnfollowPipeline::dispatch($user->profile_id, $target->id)->onQueue('high'); + } } $resource = new Fractal\Resource\Item($target, new RelationshipTransformer); $res = $this->fractal->createData($resource)->toArray();