davide.cucurnia@vola.it
2024-02-01 24347ef6b8337e75caff59295f677b58096bc4fb
gestione keysite e parametri, config nell'env
2 files added
1 files renamed
3 files modified
138 ■■■■■ changed files
app/Http/Controllers/FakeResponder/FakeResponder.php 3 ●●●● patch | view | raw | blame | history
app/Http/Requests/genericPicasso.php 60 ●●●●● patch | view | raw | blame | history
app/Http/Requests/getSelectedMSISDNDetails.php 14 ●●●● patch | view | raw | blame | history
app/Rules/KeysiteCheck.php 51 ●●●●● patch | view | raw | blame | history
config/custom.php 8 ●●●●● patch | view | raw | blame | history
dev.env 2 ●●●●● patch | view | raw | blame | history
app/Http/Controllers/FakeResponder/FakeResponder.php
@@ -3,6 +3,7 @@
namespace App\Http\Controllers\FakeResponder;
use App\Http\Controllers\Controller;
use App\Http\Requests\genericPicasso;
use App\Vola\Services\VolaFakeHTTPResponder\VolaFakeHTTPResponder;
use Illuminate\Http\Request;
use App\Vola\Classes\Utils;
@@ -44,7 +45,7 @@
        }
    }
    public function managePicassoRequest(Request $request)
    public function managePicassoRequest(genericPicasso $request)
    {
        $this->logReceivedRequest($request);
        if (isset($_COOKIE[$this->cookieFakePicassoName])) {
app/Http/Requests/genericPicasso.php
New file
@@ -0,0 +1,60 @@
<?php
namespace App\Http\Requests;
use App\Rules\KeysiteCheck;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Validation\ValidationException;
class genericPicasso extends FormRequest
{
    public function attributes()
    {
        return [
            'format' => 'formato',
            'k' => 'keysite',
        ];
    }
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array<string, mixed>
     */
    public function rules()
    {
        return [
            'format' => 'in:xml,json',
            'k' => ['required', new KeysiteCheck( request()->headers->get('referer') )],
        ];
    }
    public function messages()
    {
        return [
            'required' => 'Il campo :attribute è obbligatorio',
            'in' => 'Il campo :attribute dev\'essere valorizzato con: :values',
        ];
    }
    protected function failedValidation(Validator $validator)
    {
        $errors = (new ValidationException($validator))->errors();
        throw new HttpResponseException(
            response($errors, 422)
        );
    }
}
app/Http/Requests/getSelectedMSISDNDetails.php
File was renamed from app/Http/Requests/getWebcustomerInformation.php
@@ -2,16 +2,18 @@
namespace App\Http\Requests;
use App\Rules\KeysiteCheck;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
class getWebcustomerInformation extends FormRequest
class getSelectedMSISDNDetails extends FormRequest
{
    public function attributes()
    {
        return [
            'fiscal_code' => 'codice fiscale',
            'k' => 'keysite',
            'ms' => 'msisdn number',
        ];
    }
@@ -33,13 +35,17 @@
    public function rules()
    {
        return [
            'k' => 'required|int',
            't' => 'required|string'
            'k' => ['required', new KeysiteCheck( request()->headers->get('referer') )],
            'ms' => 'required',
        ];
    }
    public function messages()
    {
        return [
            'required' => 'Il campo :attribute è obbligatorio',
            'in' => 'Il campo :attribute dev\'essere valorizzato con: :values',
        ];
    }
    protected function failedValidation(Validator $validator)
app/Rules/KeysiteCheck.php
New file
@@ -0,0 +1,51 @@
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class KeysiteCheck implements Rule
{
    public $referer;
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct($referer)
    {
        $this->referer = $referer;
    }
    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        if (config('custom.enforce_parameters',false)) {
            $refererList = config('custom.referer-keysite-match', []);
            if (isset($refererList[$this->referer])) {
                return ($refererList[$this->referer] === $value);
            }
            return false;
        }
        return true;
    }
    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'Il keysite fornito non corrisponde con il referer';
    }
}
config/custom.php
@@ -8,6 +8,8 @@
    'compressed_responses' => env('GZIP_COMPRESS_RESPONSES', false),
    'enforce_parameters' => env('ENFORCE_REQUESTS_PARAMETERS', false),
    'portals_shortcuts' => [
        "assistenza.local.it" => "https://assistenza.local.it/dual",
        "pianizero" => "#",
@@ -16,6 +18,12 @@
        "elite" => "#",
        "faidate corporate" => "#",
    ],
    'referer-keysite-match' => [
        'assistenza.vodafone.it' => '2000062',
        'pre-assistenza.vodafone.it' => '2000061',
        'assistenza.local.it' => '2000061'
    ]
];
dev.env
@@ -59,5 +59,7 @@
LOG_PROCESSED_REQUESTS=false
LOG_REJECTED_REQUESTS=true
ENFORCE_REQUESTS_PARAMETERS=false
GZIP_COMPRESS_RESPONSES=false