visit wellness : GWM

This commit is contained in:
Gowtham M 2025-11-17 14:45:34 +05:30
parent e6917db425
commit 17afc6a8ea
2 changed files with 83 additions and 2 deletions

View File

@ -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) {

View File

@ -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"];
}