From e965a53c18bdadde8f6a4d8a45b2bb66017426bb Mon Sep 17 00:00:00 2001 From: Asnxthaony Date: Tue, 5 Jul 2022 17:09:06 +0800 Subject: [PATCH] feat(closet): add sanity check on closet management --- .../ClosetManagementController.php | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/ClosetManagementController.php b/app/Http/Controllers/ClosetManagementController.php index 514f3ea7..8a132988 100644 --- a/app/Http/Controllers/ClosetManagementController.php +++ b/app/Http/Controllers/ClosetManagementController.php @@ -17,8 +17,15 @@ class ClosetManagementController extends Controller public function add(Request $request, Dispatcher $dispatcher, User $user) { $tid = $request->input('tid'); - /** @var Texture */ - $texture = Texture::findOrFail($tid); + $texture = Texture::find($tid); + if (!$texture) { + return json(trans('user.closet.add.not-found'), 1); + } + + if ($user->closet()->where('tid', $request->tid)->count() > 0) { + return json(trans('user.closet.add.repeated'), 1); + } + $name = $texture->name; $dispatcher->dispatch('closet.adding', [$tid, $name, $user]); @@ -35,10 +42,14 @@ class ClosetManagementController extends Controller $tid = $request->input('tid'); $dispatcher->dispatch('closet.removing', [$tid, $user]); - /** @var Texture */ - $texture = Texture::findOrFail($tid); + $item = $user->closet()->find($tid); + if (empty($item)) { + return json(trans('user.closet.remove.non-existent'), 1); + } - $user->closet()->detach($texture->tid); + $user->closet()->detach($tid); + + $texture = Texture::find($tid); $dispatcher->dispatch('closet.removed', [$texture, $user]);