feat: add reciprocal user blocking
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Actions\BlockUser;
|
||||
use App\Http\Resources\BlockedUserResource;
|
||||
use App\Models\User;
|
||||
use App\Models\UserBlock;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class UserBlockController extends Controller
|
||||
{
|
||||
public function index(Request $request): AnonymousResourceCollection
|
||||
{
|
||||
$perPage = max(1, min($request->integer('per_page', 15), 100));
|
||||
$blockedUsers = $request->user()
|
||||
->blockedUsers()
|
||||
->orderByPivotDesc('created_at')
|
||||
->paginate($perPage)
|
||||
->withQueryString();
|
||||
|
||||
return BlockedUserResource::collection($blockedUsers);
|
||||
}
|
||||
|
||||
public function store(Request $request, User $user, BlockUser $blockUser): JsonResponse
|
||||
{
|
||||
abort_if($request->user()->is($user), 422, __('api.blocks.cannot_block_self'));
|
||||
|
||||
$blockUser->execute($request->user(), $user);
|
||||
|
||||
return response()->json([
|
||||
'message' => __('api.blocks.blocked'),
|
||||
]);
|
||||
}
|
||||
|
||||
public function destroy(Request $request, User $user): Response
|
||||
{
|
||||
UserBlock::query()
|
||||
->where('blocker_id', $request->user()->getKey())
|
||||
->where('blocked_id', $user->getKey())
|
||||
->delete();
|
||||
|
||||
return response()->noContent();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user