method() == 'POST') { return auth('api')->check() && auth('api')->user()->can('store', Item::class); } else { $Item = $this->route('Item'); return auth('api')->check() && $Item && auth('api')->user()->can('update', $Item); } } public function rules() { switch ($this->method()) { case 'POST': { return [ 'name' => 'required|max:100|unique:Items', 'description' => 'required', ]; break; } case 'PUT': case 'PATCH': { $Item = $this->route('Item'); return [ 'name' => 'required|max:100|unique:Items,id,'.$Item->id, 'description' => 'required', ]; break; } default: break; } } }