feat: add reciprocal user blocking
CI / 🧪 Tests Laravel (push) Successful in 2m6s
CI / 🐳 Build & Push Image (push) Successful in 39s

This commit is contained in:
2026-08-11 15:58:31 +02:00
parent 6b757c37be
commit cef3e29ddc
15 changed files with 420 additions and 17 deletions
+9 -1
View File
@@ -18,10 +18,12 @@ class FollowController extends Controller
if ($authUser->id === $user->id) {
return response()->json([
'message' => __('api.follows.cannot_follow_self')
'message' => __('api.follows.cannot_follow_self'),
], 422);
}
abort_if($authUser->hasBlockingRelationshipWith($user), 404);
// Default to Accepted as is_private doesn't exist in the DB yet
$status = FollowStatus::Accepted;
@@ -44,6 +46,8 @@ class FollowController extends Controller
public function accept(FollowRequest $request, User $user): JsonResponse
{
abort_if($request->user()->hasBlockingRelationshipWith($user), 404);
$updated = $request->user()->followers()->updateExistingPivot($user->id, [
'status' => FollowStatus::Accepted,
]);
@@ -55,6 +59,8 @@ class FollowController extends Controller
public function reject(FollowRequest $request, User $user): JsonResponse
{
abort_if($request->user()->hasBlockingRelationshipWith($user), 404);
$detached = $request->user()->followers()->detach($user->id);
return response()->json([
@@ -70,6 +76,7 @@ class FollowController extends Controller
$followers = $user->followers()
->wherePivot('status', FollowStatus::Accepted)
->withoutBlockingRelationshipWith($request->user())
->paginate($perPage);
return FollowResource::collection($followers);
@@ -83,6 +90,7 @@ class FollowController extends Controller
$following = $user->following()
->wherePivot('status', FollowStatus::Accepted)
->withoutBlockingRelationshipWith($request->user())
->paginate($perPage);
return FollowResource::collection($following);