From 21466556d46dbf2066694ca456c2b89f7657f582 Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Fri, 29 Mar 2024 23:05:48 +0100 Subject: [PATCH] Add update and delete --- app/Http/Controllers/Api/ApiController.php | 2 +- .../Api/V1/Admin/DomainBlocksController.php | 41 ++++++++++++++++++- routes/api.php | 2 + 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Api/ApiController.php b/app/Http/Controllers/Api/ApiController.php index 76d9d7db2..d8ba76668 100644 --- a/app/Http/Controllers/Api/ApiController.php +++ b/app/Http/Controllers/Api/ApiController.php @@ -35,4 +35,4 @@ class ApiController extends Controller { return $v != null; }, ARRAY_FILTER_USE_BOTH); } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/Api/V1/Admin/DomainBlocksController.php b/app/Http/Controllers/Api/V1/Admin/DomainBlocksController.php index f88da495a..56ba584cc 100644 --- a/app/Http/Controllers/Api/V1/Admin/DomainBlocksController.php +++ b/app/Http/Controllers/Api/V1/Admin/DomainBlocksController.php @@ -73,4 +73,43 @@ class DomainBlocksController extends ApiController { return $this->json(new DomainBlockResource($domain_block)); } -} \ No newline at end of file + + public function update(Request $request, $id) { + $this->validate($request, [ + 'severity' => [ + 'sometimes', + Rule::in(['noop', 'silence', 'suspend']) + ], + 'reject_media' => 'sometimes|required|boolean', + 'reject_reports' => 'sometimes|required|boolean', + 'private_comment' => 'sometimes|string|min:1|max:1000', + 'public_comment' => 'sometimes|string|min:1|max:1000', + 'obfuscate' => 'sometimes|required|boolean' + ]); + + $severity = $request->input('severity'); + $private_comment = $request->input('private_comment'); + + $instance = Instance::moderated()->findOrFail($id); + + $instance->banned = $severity === 'suspend'; + $instance->unlisted = $severity === 'silence'; + $instance->notes = [$private_comment]; + $instance->save(); + + InstanceService::refresh(); + + return $this->json(new DomainBlockResource($instance)); + } + + public function delete(Request $request, $id) { + $instance = Instance::moderated()->findOrFail($id); + $instance->banned = false; + $instance->unlisted = false; + $instance->save(); + + InstanceService::refresh(); + + return $this->json([], [], 200); + } +} diff --git a/routes/api.php b/routes/api.php index 95440d3c0..85e441823 100644 --- a/routes/api.php +++ b/routes/api.php @@ -106,6 +106,8 @@ Route::group(['prefix' => 'api'], function() use($middleware) { Route::get('domain_blocks', 'Api\V1\Admin\DomainBlocksController@index')->middleware($middleware); Route::post('domain_blocks', 'Api\V1\Admin\DomainBlocksController@create')->middleware($middleware); Route::get('domain_blocks/{id}', 'Api\V1\Admin\DomainBlocksController@show')->middleware($middleware); + Route::put('domain_blocks/{id}', 'Api\V1\Admin\DomainBlocksController@update')->middleware($middleware); + Route::delete('domain_blocks/{id}', 'Api\V1\Admin\DomainBlocksController@delete')->middleware($middleware); })->middleware($middleware); });