davide.cucurnia@vola.it
2024-02-07 59b0688842f1808c1a51f277d8605b3ec4a710de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
 
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;
 
class FakeResponder extends Controller
{
 
    public string $cookieFakeSSOName = "CAuthCookie";
    public string $cookieFakePicassoName = "SSOSESSIONID";
    public array $headers;
    public VolaFakeHTTPResponder $VolaFakeSSO;
 
    function __construct()
    {
        $this->VolaFakeSSO = new VolaFakeHTTPResponder();
        $this->headers = [
            "Content-Type" => 'text/xml',
        ];
        if (config('custom.compressed_responses',false) === TRUE) {
            $this->headers['content-encoding'] = 'gzip';
        }
    }
 
    public function modelBasedRequest(Request $request)
    {
        $this->logReceivedRequest($request);
 
        $picassoRequest = (str_starts_with('/picasso/', $request->getRequestUri()));
 
        if (!$picassoRequest && isset($_COOKIE[$this->cookieFakeSSOName])) {
            $profile = intval(str_replace("xno:", "", $_COOKIE[$this->cookieFakeSSOName]));
        } else if ($picassoRequest && isset($_COOKIE[$this->cookieFakePicassoName])) {
            $profile = intval(str_replace("xno:", "", $_COOKIE[$this->cookieFakePicassoName]));
        }
 
        if (isset($profile)) {
            $responseContent = $this->VolaFakeSSO->getModelBasedResponses($request, $profile, $picassoRequest);
            $this->logProcessedRequest($request, $responseContent, "SSO Legacy");
            $responseContent = $this->compressIfRequested($request, $responseContent);
            return response($responseContent, 200, $this->headers);
        } else {
            $this->logRejectedRequest($request);
            return response('No cookie, no logged', 400, $this->headers);
        }
    }
 
    public function manageLegacyRequest(Request $request)
    {
        $this->logReceivedRequest($request);
        if (isset($_COOKIE[$this->cookieFakeSSOName])) {
            $profile = intval(str_replace("xno:", "", $_COOKIE[$this->cookieFakeSSOName]));
            $responseContent = $this->VolaFakeSSO->getResponses($request, $profile);
 
            $this->logProcessedRequest($request, $responseContent, "SSO Legacy");
            $responseContent = $this->compressIfRequested($request, $responseContent);
 
            return response($responseContent, 200, $this->headers);
 
        } else {
            $this->logRejectedRequest($request);
            return response('No cookie, no logged', 400, $this->headers);
        }
    }
 
    public function managePicassoRequest(genericPicasso $request)
    {
        $this->logReceivedRequest($request);
        if (isset($_COOKIE[$this->cookieFakePicassoName])) {
            $profile = intval(str_replace("xno:", "", $_COOKIE[$this->cookieFakePicassoName]));
            $responseContent = $this->VolaFakeSSO->getResponses($request, $profile, true);
 
            $this->logProcessedRequest($request, $responseContent, "Picasso");
            $responseContent = $this->compressIfRequested($request, $responseContent);
 
            return response($responseContent, 200, $this->headers);
        } else {
            $this->logRejectedRequest($request);
            return response('No cookie no logged', 400, $this->headers);
        }
    }
 
}