StatusController::checkValidation()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.9
c 0
b 0
f 0
cc 2
nc 2
nop 1
1
<?php
2
3
namespace Tzsk\Payu\Controllers;
4
5
use Illuminate\Http\Request;
6
use Tzsk\Payu\Actions\Actionable;
7
use Tzsk\Payu\Actions\FailedResponse;
8
use Tzsk\Payu\Actions\SuccessResponse;
9
use Tzsk\Payu\Models\PayuTransaction;
10
11
class StatusController
12
{
13
    public function __invoke(Request $request)
14
    {
15
        $this->checkValidation($request);
16
17
        /** @var PayuTransaction $payment */
18
        $transaction = PayuTransaction::query()->locate($request->input('transaction'));
19
20
        $this->handler($request)->handle($transaction);
21
22
        return redirect()->to($transaction->destination);
23
    }
24
25
    protected function handler(Request $request): Actionable
26
    {
27
        $actions = [
28
            PayuTransaction::STATUS_SUCCESSFUL => new SuccessResponse($request),
29
            PayuTransaction::STATUS_FAILED => new FailedResponse($request),
30
        ];
31
32
        $callable = data_get($actions, $request->input('urlType'));
33
        abort_unless($callable, 403);
34
35
        return $callable;
36
    }
37
38
    protected function checkValidation(Request $request)
39
    {
40
        if (! $request->hasValidSignature()) {
41
            abort(403);
42
        }
43
44
        $request->validate([
0 ignored issues
show
Bug introduced by
The call to validate() misses a required argument $...$params.

This check looks for function calls that miss required arguments.

Loading history...
45
            'transaction' => 'required|string',
46
            'hash' => 'required|string',
47
        ]);
48
    }
49
}
50