mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-04 03:57:32 -05:00 
			
		
		
		
	Run time form requests
This commit is contained in:
		
							parent
							
								
									910aeebaf7
								
							
						
					
					
						commit
						c1a39a6ea0
					
				@ -81,6 +81,7 @@ class ImportController extends Controller {
 | 
			
		||||
		/** @var UploadedFile $file */
 | 
			
		||||
		foreach ( $request->files->get( 'files' ) as $entityType => $file ) {
 | 
			
		||||
			$contents = file_get_contents( $file->getPathname() );
 | 
			
		||||
			// $contents = mb_convert_encoding($contents, 'UTF-16LE', 'UTF-8');
 | 
			
		||||
 | 
			
		||||
			// Store the csv in cache with an expiry of 10 minutes
 | 
			
		||||
			Cache::put( $hash . '-' . $entityType, base64_encode( $contents ), 600 );
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,6 @@ use Illuminate\Validation\Rule;
 | 
			
		||||
class StoreClientRequest extends Request
 | 
			
		||||
{
 | 
			
		||||
    use MakesHash;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Determine if the user is authorized to make this request.
 | 
			
		||||
     *
 | 
			
		||||
@ -89,7 +88,7 @@ class StoreClientRequest extends Request
 | 
			
		||||
    protected function prepareForValidation()
 | 
			
		||||
    {
 | 
			
		||||
        $input = $this->all();
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        $settings = ClientSettings::defaults();
 | 
			
		||||
 | 
			
		||||
        if (array_key_exists('settings', $input) && ! empty($input['settings'])) {
 | 
			
		||||
 | 
			
		||||
@ -11,6 +11,7 @@
 | 
			
		||||
 | 
			
		||||
namespace App\Http\Requests;
 | 
			
		||||
 | 
			
		||||
use App\Http\Requests\RuntimeFormRequest;
 | 
			
		||||
use App\Http\ValidationRules\User\RelatedUserRule;
 | 
			
		||||
use App\Utils\Traits\MakesHash;
 | 
			
		||||
use Illuminate\Foundation\Http\FormRequest;
 | 
			
		||||
@ -18,7 +19,7 @@ use Illuminate\Foundation\Http\FormRequest;
 | 
			
		||||
class Request extends FormRequest
 | 
			
		||||
{
 | 
			
		||||
    use MakesHash;
 | 
			
		||||
 | 
			
		||||
    use RuntimeFormRequest;
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the validation rules that apply to the request.
 | 
			
		||||
     *
 | 
			
		||||
@ -163,9 +164,18 @@ class Request extends FormRequest
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (array_key_exists('email', $contact)) 
 | 
			
		||||
                    $input['contacts'][$key]['email'] = trim($contact['email']);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        return $input;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected function prepareForValidation()
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										43
									
								
								app/Http/Requests/RuntimeFormRequest.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								app/Http/Requests/RuntimeFormRequest.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Http\Requests;
 | 
			
		||||
 | 
			
		||||
use Illuminate\Http\Request;
 | 
			
		||||
use Illuminate\Support\Facades\Validator;
 | 
			
		||||
 | 
			
		||||
trait RuntimeFormRequest
 | 
			
		||||
{
 | 
			
		||||
    public static function runFormRequest($value)
 | 
			
		||||
    {
 | 
			
		||||
        $value = self::getMockedRequestByParameters($value);
 | 
			
		||||
 | 
			
		||||
        $validator = self::createFrom($value, new self());
 | 
			
		||||
 | 
			
		||||
        $validator->setContainer(app());
 | 
			
		||||
 | 
			
		||||
        $validator->prepareForValidation();
 | 
			
		||||
 | 
			
		||||
        $validator->setValidator(Validator::make($validator->all(), $validator->rules()));
 | 
			
		||||
 | 
			
		||||
        $instance = $validator->getValidatorInstance();
 | 
			
		||||
 | 
			
		||||
        return $instance;
 | 
			
		||||
        // if ($instance->fails()) {
 | 
			
		||||
        //     return $instance->errors();
 | 
			
		||||
        // }
 | 
			
		||||
 | 
			
		||||
        // $validator->passedValidation();
 | 
			
		||||
 | 
			
		||||
        // return $validator->all();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    protected static function getMockedRequestByParameters($paramters)
 | 
			
		||||
    {
 | 
			
		||||
        $mockRequest = Request::create('', 'POST');
 | 
			
		||||
 | 
			
		||||
        $mockRequest->merge($paramters);
 | 
			
		||||
 | 
			
		||||
        return $mockRequest;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -372,11 +372,13 @@ class CSVImport implements ShouldQueue {
 | 
			
		||||
				$entity = $transformer->transform( $record );
 | 
			
		||||
 | 
			
		||||
				/** @var \App\Http\Requests\Request $request */
 | 
			
		||||
				$request = new $request_name();
 | 
			
		||||
				// $request = new $request_name();
 | 
			
		||||
				// $request->prepareForValidation();
 | 
			
		||||
 | 
			
		||||
				// Pass entity data to request so it can be validated
 | 
			
		||||
				$request->query = $request->request = new ParameterBag( $entity );
 | 
			
		||||
				$validator = Validator::make( $entity, $request->rules() );
 | 
			
		||||
				// $request->query = $request->request = new ParameterBag( $entity );
 | 
			
		||||
				// $validator = Validator::make( $entity, $request->rules() );
 | 
			
		||||
				$validator = $request_name::runFormRequest($entity);
 | 
			
		||||
 | 
			
		||||
				if ( $validator->fails() ) {
 | 
			
		||||
					$this->error_array[ $entity_type ][] =
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user