commit ea606fbc2e7bee36a6b79559d3a242a0e2231ea8 Author: smarcet Date: Thu Oct 15 16:49:17 2020 -0300 Fixed enter/leave payload parsing Change-Id: Id3d32702d2486b4df8d991dad192ab9ff0b88a95 Signed-off-by: smarcet diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMetricsApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMetricsApiController.php index 417210e..f627312 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMetricsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitMetricsApiController.php @@ -12,7 +12,10 @@ * limitations under the License. **/ use App\Services\Model\ISummitMetricService; +use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Request; +use Illuminate\Support\Facades\Validator; use models\exceptions\EntityNotFoundException; use models\exceptions\ValidationException; use models\main\IMemberRepository; @@ -73,11 +76,24 @@ final class OAuth2SummitMetricsApiController extends OAuth2ProtectedController $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); - $payload = $this->getJsonPayload([ - 'type' => 'required|string', - 'source_id' => 'sometimes|integer', + $payload = Input::all(); + if(Request::isJson()){ + $payload = Input::json()->all(); + } + + $validation = Validator::make($payload, + [ + 'type' => 'required|string|in:'.implode(",", ISummitMetricType::ValidTypes), + 'source_id' => 'sometimes|integer', ]); + if ($validation->fails()) { + $messages = $validation->messages()->toArray(); + $ex = new ValidationException(); + $ex->setMessages($messages); + throw $ex; + } + $metric = $this->service->enter($summit, $current_member, $payload); return $this->updated(SerializerRegistry::getInstance()->getSerializer($metric)->serialize()); @@ -117,11 +133,25 @@ final class OAuth2SummitMetricsApiController extends OAuth2ProtectedController $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); - $payload = $this->getJsonPayload([ - 'type' => 'required|string|in:'.implode(",", ISummitMetricType::ValidTypes), - 'source_id' => 'sometimes|integer', + $payload = Input::all(); + if(Request::isJson()){ + $payload = Input::json()->all(); + } + + $validation = Validator::make($payload, + [ + 'type' => 'required|string|in:'.implode(",", ISummitMetricType::ValidTypes), + 'source_id' => 'sometimes|integer', + ]); + if ($validation->fails()) { + $messages = $validation->messages()->toArray(); + $ex = new ValidationException(); + $ex->setMessages($messages); + throw $ex; + } + $metric = $this->service->leave($summit, $current_member, $payload); return $this->updated(SerializerRegistry::getInstance()->getSerializer($metric)->serialize());