| Current Path : /home/users/unlimited/www/whatsjet-saas/Source/app/Yantrana/Base/ |
| Current File : /home/users/unlimited/www/whatsjet-saas/Source/app/Yantrana/Base/AddonBaseController.php |
<?php
namespace App\Yantrana\Base;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use App\Yantrana\Base\BaseController;
use App\Yantrana\Base\BaseRequestTwo;
use Illuminate\Support\Facades\Response;
use App\Yantrana\Components\Configuration\Requests\ConfigurationRequest;
class AddonBaseController extends BaseController
{
/**
* Addon Namespace
*
* @var string
*/
protected $addonNamespace = "AddonNamespace";
/**
* Show Addon Settings Page
*
* @return view
*/
public function showSettings()
{
validateVendorAccess('administrative');
return $this->addonView('settings');
}
/**
* Get Addon Base Path
*
* @param string $path
* @return string
*/
function addonBasePath($path = '') {
return base_path('addons'. DIRECTORY_SEPARATOR . $this->addonNamespace. DIRECTORY_SEPARATOR . $path);
}
/**
* Serve addon assets.
*
* @param Request $request
* @param string $path
* @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse
*/
public function assetServe(BaseRequestTwo $request, $path)
{
$file = $this->addonBasePath('assets' . DIRECTORY_SEPARATOR . $path);
if (!File::exists($file)) {
abort(404, 'Asset not found.');
}
$mimeType = File::mimeType($file);
return Response::make(File::get($file), 200, ['Content-Type' => $mimeType]);
}
/**
* Activate Addon View
*
* @return view
*/
public function setupView()
{
return $this->addonView('setup', [
'addonMetadata' => $this->addonMetadata(),
'addon' => $this->addonNamespace,
'addonLicInfo' => function ($item) {
return $this->getAddonLicInfo($item);
},
]);
}
/**
* Base Addon View method
*
* @param string $viewName
* @param array $parameters
* @return view
*/
public function addonView($viewName, $parameters = [])
{
return view("{$this->addonNamespace}::$viewName", $parameters);
}
/**
* Addon Metadata
*
* @return array
*/
public function addonMetadata()
{
return require $this->addonBasePath('/config/metadata.php');
}
/**
* Get addon lic info
*
* @param string $item
* @return mixed
*/
public function getAddonLicInfo($item = null)
{
return getAppSettings('lwAddon' . $this->addonNamespace, $item);
}
/**
* Process addon reg
*
* @param array $inputData
* @return mixed
*---------------------------------------------------------------- */
public function processAddonActivation(ConfigurationRequest $request)
{
$inputData = $request->all();
$processReaction = setAppSettings('lwAddon'. $this->addonNamespace, [
'lwAddon'. $this->addonNamespace => [
'registration_id' => array_get($inputData, 'registration_id', ''),
'email' => array_get($inputData, 'your_email', ''),
'licence' => array_get($inputData, 'licence_type', ''),
'supported_until' => array_get($inputData, 'supported_until', ''),
'registered_at' => now(),
'signature' => sha1(
array_get($_SERVER, 'HTTP_HOST', '').
array_get($inputData, 'registration_id', '') . '1.0+'
),
],
]);
return $this->responseAction($this->processResponse($processReaction, [], [], true));
}
/**
* Process addon reg remove
*
*
* @return response
*---------------------------------------------------------------- */
public function processAddonDeactivation(ConfigurationRequest $request)
{
// remote removal
$existingRegistrationId = $this->getAddonLicInfo('registration_id');
if (!$request->isMethod('post') and $existingRegistrationId and (!$request->registration_id or ($existingRegistrationId != $request->registration_id))) {
abort(404, __tr('Invalid Request'));
}
try {
// Initialize a cURL session
$curl = curl_init();
// Define the URL where you want to send the POST request
$url = config('lwSystem.app_update_url') . "/api/app-update/deactivate-license"; // Replace with the actual URL
// Define the POST fields, including the 'registration_id' parameter
$postData = [
'registration_id' => $existingRegistrationId, // Replace with the actual registration ID
];
// Set the Origin header
$headers = [
'Origin: ' . array_get($_SERVER, 'HTTP_ORIGIN', ''), // Replace with your actual origin
];
// Set cURL options
curl_setopt($curl, CURLOPT_URL, $url); // Set the URL
curl_setopt($curl, CURLOPT_POST, true); // Specify the request method as POST
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postData)); // Attach the POST fields
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); // Attach the Origin header
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // Return the response as a string
// Execute the cURL request
$response = curl_exec($curl);
// Check for errors
if ($response === false) {
$error = curl_error($curl);
// echo "cURL Error: $error";
} else {
// Handle the response as needed
// echo "Response: $response";
// __logDebug($response);
}
// Close the cURL session
curl_close($curl);
} catch (\Throwable $th) {
//throw $th;
}
$processReaction = setAppSettings('lwAddon'. $this->addonNamespace, [
'lwAddon'. $this->addonNamespace => [
'registration_id' => '',
'email' => '',
'licence' => '',
'registered_at' => now(),
'signature' => '',
],
]);
return $this->responseAction($this->processResponse($processReaction, [], [], true));
}
}