1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-20 08:21:34 +02:00
invoiceninja/app/Http/Requests/Request.php

76 lines
2.2 KiB
PHP
Raw Normal View History

2017-01-30 20:40:43 +01:00
<?php
2015-03-12 01:44:39 +01:00
2017-01-30 20:40:43 +01:00
namespace App\Http\Requests;
use App\Libraries\Utils;
2015-03-12 01:44:39 +01:00
use Illuminate\Foundation\Http\FormRequest;
use Response;
2015-03-12 01:44:39 +01:00
// https://laracasts.com/discuss/channels/general-discussion/laravel-5-modify-input-before-validation/replies/34366
2017-01-30 17:05:31 +01:00
abstract class Request extends FormRequest
{
// populate in subclass to auto load record
protected $autoload = [];
/**
* Validate the input.
*
2017-01-30 20:40:43 +01:00
* @param \Illuminate\Validation\Factory $factory
*
* @return \Illuminate\Validation\Validator
*/
public function validator($factory)
{
return $factory->make(
$this->sanitizeInput(), $this->container->call([$this, 'rules']), $this->messages()
);
}
2015-03-12 01:44:39 +01:00
/**
* Sanitize the input.
*
* @return array
*/
protected function sanitizeInput()
{
if (method_exists($this, 'sanitize')) {
$input = $this->container->call([$this, 'sanitize']);
} else {
$input = $this->all();
}
// autoload referenced entities
foreach ($this->autoload as $entityType) {
if ($id = $this->input("{$entityType}_public_id") ?: $this->input("{$entityType}_id")) {
$class = 'App\\Models\\' . ucwords($entityType);
$entity = $class::scope($id)->firstOrFail();
$input[$entityType] = $entity;
$input[$entityType . '_id'] = $entity->id;
}
}
$this->replace($input);
return $this->all();
}
public function response(array $errors)
{
/* If the user is not validating from a mobile app - pass through parent::response */
2017-01-30 17:05:31 +01:00
if (! request()->api_secret) {
return parent::response($errors);
2016-12-22 18:12:12 +01:00
}
/* If the user is validating from a mobile app - pass through first error string and return error */
2017-01-30 17:05:31 +01:00
foreach ($errors as $error) {
foreach ($error as $key => $value) {
2017-01-30 20:40:43 +01:00
$message['error'] = ['message' => $value];
$message = json_encode($message, JSON_PRETTY_PRINT);
$headers = Utils::getApiHeaders();
return Response::make($message, 400, $headers);
}
}
}
2015-03-12 01:44:39 +01:00
}