From 17afc6a8ea45163dfbacf7722f83d79d15c6fbf0 Mon Sep 17 00:00:00 2001 From: Gowtham M Date: Mon, 17 Nov 2025 14:45:34 +0530 Subject: [PATCH] visit wellness : GWM --- app/Config/Routes.php | 2 +- app/Controllers/ApiServiceController.php | 83 +++++++++++++++++++++++- 2 files changed, 83 insertions(+), 2 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index efec8a5d..abca62d8 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -549,7 +549,7 @@ $routes->post("employeeRest/getPostEmployeeDataForAuth", "RestAuthenticationCont $routes->get("employeeRest/getClientDetails", "EmployeeRestController::getClientDetails"); $routes->get("employeeRest/getAdvertisementImage", "EmployeeRestController::getAdvertisementImage"); - +$routes->get("getSSORedirectUrl", "ApiServiceController::getSSORedirectUrl"); $routes->group("employeeRest", ["filter" => "authJWT"], function ($routes) { diff --git a/app/Controllers/ApiServiceController.php b/app/Controllers/ApiServiceController.php index ad6a114c..f8c4ca50 100644 --- a/app/Controllers/ApiServiceController.php +++ b/app/Controllers/ApiServiceController.php @@ -213,7 +213,7 @@ class ApiServiceController extends BaseController } - public function getWellnessUrl() + public function getWellnessUrl() { $emp_id = $this->request->getGet('emp_id'); @@ -310,6 +310,87 @@ class ApiServiceController extends BaseController + function getSSORedirectUrl($email = 'user@example.com') + { + // ---------- CONFIG ---------- + $authUrl = env('VIDAL_WELLNESS_BASE_URL'); // Authentication API URL + $subscriptionKey = env('VIDAL_WELLNESS_SUBSCRIPTION_KEY'); + $apiVersion = "1"; + + // Provided Base64 AES key + $base64Key = env('VIDAL_WELLNESS_BASE64_KEY'); + $key = base64_decode($base64Key); + + // ---------- STEP 1: Build plaintext payload ---------- + $plainPayload = json_encode([ + "email" => $email, + "corporateId" => env('VIDAL_WELLNESS_CORPORATE_ID'), + "urlIdentifier" => env('VIDAL_WELLNESS_URL_IDENTIFIER') + ]); + + // ---------- STEP 2: Encrypt payload ---------- + $iv = random_bytes(16); + $encryptedRaw = openssl_encrypt($plainPayload, "AES-256-CBC", $key, OPENSSL_RAW_DATA, $iv); + + $encryptedPayload = base64_encode($iv) . ":" . base64_encode($encryptedRaw); + + // ---------- STEP 3: Call Authentication API ---------- + $requestBody = json_encode([ + "payload" => $encryptedPayload, + "source" => "portal", + "subPartnerId" => env('VIDAL_WELLNESS_SUB_PARTNER_ID') + ]); + + $headers = [ + "Ocp-Apim-Subscription-Key: $subscriptionKey", + "apiver: $apiVersion", + "mode: encrypt", + "Content-Type: application/json" + ]; + + $ch = curl_init($authUrl); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + $apiResponse = curl_exec($ch); + curl_close($ch); + + $jsonResponse = json_decode($apiResponse, true); + + dd($jsonResponse); + + if (!isset($jsonResponse["data"])) { + return ["error" => "Invalid API response", "response" => $apiResponse]; + } + + + + // ---------- STEP 4: Decrypt response ---------- + list($ivBase64, $cipherBase64) = explode(":", $jsonResponse["data"]); + + $respIv = base64_decode($ivBase64); + $respCipher = base64_decode($cipherBase64); + + $decryptedJson = openssl_decrypt($respCipher, "AES-256-CBC", $key, OPENSSL_RAW_DATA, $respIv); + + $decryptedData = json_decode($decryptedJson, true); + + if (!isset($decryptedData["redirectUrl"])) { + return ["error" => "redirectUrl missing", "decrypted" => $decryptedData]; + } + + // ---------- FINAL ---------- + return $decryptedData["redirectUrl"]; + } + + + + + + +