From b55a38378482bfe6a43315f5b665f608a7651880 Mon Sep 17 00:00:00 2001 From: davide.cucurnia@vola.it <davide.cucurnia@vola.it> Date: Tue, 02 Jul 2024 12:15:15 +0200 Subject: [PATCH] sistemazione migration per modifica campi di appartenenza e foreign keys --- app/Vola/Services/VolaFakeHTTPResponder/VolaFakeHTTPResponder.php | 96 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 71 insertions(+), 25 deletions(-) diff --git a/app/Vola/Services/VolaFakeHTTPResponder/VolaFakeHTTPResponder.php b/app/Vola/Services/VolaFakeHTTPResponder/VolaFakeHTTPResponder.php index 7e64835..a0cd65e 100644 --- a/app/Vola/Services/VolaFakeHTTPResponder/VolaFakeHTTPResponder.php +++ b/app/Vola/Services/VolaFakeHTTPResponder/VolaFakeHTTPResponder.php @@ -13,47 +13,73 @@ class VolaFakeHTTPResponder { public array $data; - public array $headers; - private array $sso_XML; + private array $xmlResponses; public function __construct() { - $this->sso_XML = config('devtools.fake_sso_profiles'); + $this->xmlResponses = config('devtools.fake_sso_profiles'); } - public function getResponses(Request $request, $testUser, $picasso = false) + public function getModelBasedResponses(Request $request): array + { + $picassoRequest = (str_starts_with($request->getRequestUri(), '/picasso/',)); + $profile = Utils::getRequestedUser($request); + + if (isset($profile)) { + + $responseContent["data"] = 'test. funziono ma le logiche non sono state ancora implementate'; + $responseContent["status"] = 200; + \RequestLogger::logProcessedRequest($request, $responseContent, (($picassoRequest) ? 'Picasso' : 'SSO Legacy') ); + return $responseContent; + + } else { + \RequestLogger::logRejectedRequest($request, $request->cookies); + return [ + "status" => 400, + "data" => $this->getErrorMessage('no-cookie') + ]; + } + + } + + public function getResponses(Request $request, $selectedUser, $picasso = false): string|array { $uriParts = explode("?", $request->url()); $methodUri = Str::afterLast($uriParts[0], "/"); $reqParams = !empty($request->query()) ? $request->query() : []; if (($methodUri == 'isLogged') || ($methodUri == 'islogged')) { // controllo cookie e conseguente risposta isLogged - $loginResponse = ($picasso) ? $this->getLoggedPicasso($testUser) : $this->getLoggedLegacy($testUser); + $loginResponse = ($picasso) ? $this->getLoggedPicasso($selectedUser) : $this->getLoggedLegacy($selectedUser); return $loginResponse; } else if ($methodUri != "") { // controllo metodo e parametri e conseguente risposta - $userResponses = $this->getUserResponseSet($request, $testUser); + $userResponses = $this->getUserResponseGroup($selectedUser, $picasso); if (isset($userResponses[$methodUri])) { $responseContent = $this->getResponseArgumentsBased($userResponses, $methodUri, $reqParams); return $responseContent; + } else { + return $methodUri . " " . $selectedUser . " " . $this->getErrorMessage('no-method-on-user'); } } else { - return 'wront-request-no-such-method'; + return $this->getErrorMessage('no-method'); } } - public function getLoggedPicasso($testUser) + public function getLoggedPicasso($selectedUser): string|array { if (isset($_COOKIE["SSOSESSIONID"])) { - $sampleResponseString = Arr::first($this->sso_XML[$testUser]["picasso"]["getWebcustomerInformation"]["parametri"]["t"] ); + if (!isset($this->xmlResponses[$selectedUser]["picasso"])) { + return $this->getErrorMessage('no-picasso-user'); + } + $sampleResponseString = Arr::first($this->xmlResponses[$selectedUser]["picasso"]["getWebcustomerInformation"]["parametri"]["k"] ); $sampleResponseObject = Utils::convertXMLStrToArray($sampleResponseString); $resp = [ 'logged' => (string) 1, 'errorCode' => (string) 0, 'username' => (string) $sampleResponseObject["Username"], 'next_user' => (string) 'N', - //'token' => '415F2B31F1C15FA45C9A6E1CBEB0ADF3' + 'token' => (string) 'xno:' . $selectedUser, ]; } else { $resp = [ @@ -65,16 +91,19 @@ return $xml; } - public function getLoggedLegacy($testUser) + public function getLoggedLegacy($selectedUser): string|array { if (isset($_COOKIE["CAuthCookie"])) { - $sampleResponseString = Arr::first($this->sso_XML[$testUser]["picasso"]["getWebcustomerInformation"]["parametri"]["t"] ); + if (!isset($this->xmlResponses[$selectedUser]["sso"])) { + return $this->getErrorMessage('no-sso-user'); + } + $sampleResponseString = Arr::first($this->xmlResponses[$selectedUser]["sso"]["getWebcustomerInformation"]["parametri"]["k"] ); $sampleResponseObject = Utils::convertXMLStrToArray($sampleResponseString); $resp = [ 'logged' => (string) 1, 'errorCode' => (string) 0, 'username' => (string) $sampleResponseObject["Username"], - 'token' => (string) '415F2B31F1C15FA45C9A6E1CBEB0ADF3', + 'token' => (string) 'xno:' . $selectedUser, 'next_user' => (string) 'N', ]; } else { @@ -87,7 +116,7 @@ return $xml; } - public function getResponseArgumentsBased($userMethods, $methodUri, $reqParams = []) + public function getResponseArgumentsBased($userMethods, $methodUri, $reqParams = []): string { $method = $userMethods[$methodUri]; $params = $method["parametri"]; @@ -95,34 +124,51 @@ //assumo che se la richiesta sia arrivata fin qui abbia tutti i mandatory nel url foreach ($reqParams as $key => $value) { //verifico se il metodo dell' utente ha la chiave che sto cercando - if ($key != "t" && isset($params[$key])) { + if ($key != "k" && isset($params[$key])) { if (array_key_exists($value, $params[$key])) { - \Log::channel('general')->debug("[VolaFakeHTTPResponder] Inserisco xml specifico per key:$key ,params: " . print_r($params, 1) . " key: $key, value: $value, xml: " . print_r($params[$key][$value], 1)); + \Log::channel('requests')->debug("[VolaFakeHTTPResponder] Inserisco xml specifico per key:$key ,params: " . print_r($params, 1) . " key: $key, value: $value, xml: " . print_r($params[$key][$value], 1)); return $params[$key][$value]; } } } //xml di default (se richiede parametri di default conterrĂ errori) - $defaultResponse = Arr::first($params["t"]); - \Log::channel('general')->debug("[VolaFakeHTTPResponder] Inserisco xml di default $defaultResponse per method: $methodUri"); + $defaultResponse = Arr::first($params["k"]); + \Log::channel('requests')->debug("[VolaFakeHTTPResponder] Inserisco xml di default $defaultResponse per method: $methodUri"); return $defaultResponse; } /** * @param Request $request - * @param mixed $testUser + * @param mixed $selectedUser + * @param bool $picasso * @return array|mixed */ - private function getUserResponseSet(Request $request, mixed $testUser) + private function getUserResponseGroup(mixed $selectedUser, bool $picasso): array { - $url = $request->url(); - $isPicasso = Str::contains($url, "picasso"); - if ($isPicasso) { - $userMethods = $this->sso_XML[$testUser]["picasso"] ?? []; + if ($picasso) { + $userMethods = $this->xmlResponses[$selectedUser]["picasso"] ?? []; } else { - $userMethods = $this->sso_XML[$testUser]["sso"] ?? []; + $userMethods = $this->xmlResponses[$selectedUser]["sso"] ?? []; } return $userMethods; } + private function getErrorMessage(string $code): string + { + switch ($code) { + case 'no-cookie': + return 'No cookie No Party. Send your CAuthCookie or SESSIONID cookie'; + case 'no-sso-user': + return 'This sso user doesnt exist. Check your CAuthCookie cookie value'; + case 'no-picasso-user': + return 'This picasso user doesnt exist. Check your SSOSESSIONID coookie value'; + case 'no-method-on-user': + return 'This method response is not set for this user. Check this server database.'; + case 'no-method': + return 'Couldnt detect requested method. Check your request url.'; + default: + return 'Couldnt detect proper response.'; + } + } + } -- Gitblit v1.8.0