49 lines
1.4 KiB
PHP
49 lines
1.4 KiB
PHP
<?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();
|
|
}
|
|
}
|