209 lines
5.5 KiB
PHP
Executable File
209 lines
5.5 KiB
PHP
Executable File
<?php
|
|
|
|
namespace JR\ReportIntegration\Helper;
|
|
|
|
use Magento\Framework\App\Helper\AbstractHelper;
|
|
use Magento\Framework\App\Helper\Context;
|
|
use Magento\Framework\App\Request\Http;
|
|
use Magento\Framework\Exception\LocalizedException;
|
|
use Magento\Framework\Exception\NoSuchEntityException;
|
|
use Magento\Framework\HTTP\PhpEnvironment\RemoteAddress;
|
|
use Magento\Framework\HTTP\PhpEnvironment\Request;
|
|
|
|
class Data extends AbstractHelper
|
|
{
|
|
const INTEGRATION_EMAIL = 'magento_integration@ltsecurityinc.com';
|
|
|
|
/**
|
|
* Array of the offices name and code
|
|
*
|
|
* @static
|
|
*/
|
|
private static $offices = array(
|
|
'LA' => 'California - Los Angeles',
|
|
'SF' => 'California - San Francisco',
|
|
'IL' => 'Illinois',
|
|
'MD' => 'Maryland',
|
|
'NJ' => 'New Jersey - Mount Laurel',
|
|
'NY' => 'New York',
|
|
'TX' => 'Texas - Houston',
|
|
'FL' => 'Florida - Miami',
|
|
'DAL' => 'Texas - Dallas',
|
|
'AZ' => 'Arizona',
|
|
'GA' => 'Georgia',
|
|
);
|
|
|
|
/**
|
|
* Allowed access external ip address
|
|
*
|
|
* @static
|
|
*/
|
|
private static $allowIPs = array('170.178.140.197', '216.38.130.66', '50.208.102.65', '65.200.20.10', '65.200.20.100', '218.17.99.34', '50.234.221.186', '18.205.44.243', '76.93.76.210', '172.115.78.255', '23.239.27.249', '136.52.117.191', '47.176.147.237', '3.210.104.233', '167.216.131.180', '99.124.205.233', '47.41.206.149');
|
|
//172.115.78.255, 23.239.27.249, 136.52.117.191 and 76.93.76.210 are external contractor IP
|
|
/**
|
|
* Office IPs
|
|
*
|
|
* @static
|
|
*/
|
|
private static $officeIPs = array('65.200.20.100', '108.2.62.210', '96.72.90.61', '71.25.182.211', '96.91.103.65', '170.178.140.197', '216.38.130.66', '65.200.20.10', '65.200.20.118', '96.226.119.130', '96.92.220.188', '96.91.230.118', '50.208.102.65', '96.224.235.11', '184.179.14.253', '96.91.34.126', '50.234.221.186', '72.17.14.98', '47.190.62.52', '76.217.125.193', '98.0.153.27', '47.176.147.237', '167.216.131.180', '99.124.205.233');
|
|
|
|
/**
|
|
* @var \Magento\Eav\Api\AttributeRepositoryInterface
|
|
*/
|
|
protected $attributeRepository;
|
|
|
|
/**
|
|
* Data constructor.
|
|
* @param \Magento\Eav\Api\AttributeRepositoryInterface $attributeRepository
|
|
*/
|
|
public function __construct(
|
|
\Magento\Eav\Api\AttributeRepositoryInterface $attributeRepository
|
|
) {
|
|
$this->attributeRepository = $attributeRepository;
|
|
}
|
|
|
|
/**
|
|
* Returns allow ips
|
|
*
|
|
* @static
|
|
*/
|
|
public static function getAllowIps()
|
|
{
|
|
return self::$allowIPs;
|
|
}
|
|
|
|
/**
|
|
* Returns office ips
|
|
*
|
|
* @static
|
|
*/
|
|
public static function getOfficeIps()
|
|
{
|
|
return self::$officeIPs;
|
|
}
|
|
|
|
/**
|
|
* Check if client IP is allowed
|
|
*
|
|
* @static
|
|
*/
|
|
public static function checkIP()
|
|
{
|
|
if (!self::canAccess()) {
|
|
self::_403();
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Raise 400 Bad Request
|
|
*
|
|
* @static
|
|
*/
|
|
public static function _400()
|
|
{
|
|
header('HTTP/1.1 400 Bad Request');
|
|
die('Bad Request');
|
|
}
|
|
|
|
/**
|
|
* Raise 401 Unauthorized
|
|
*
|
|
* @static
|
|
*/
|
|
public static function _401()
|
|
{
|
|
header('HTTP/1.1 401 Unauthorized');
|
|
die('Unauthorized');
|
|
}
|
|
|
|
/**
|
|
* Raise 403 Forbidden
|
|
*
|
|
* @static
|
|
*/
|
|
public static function _403()
|
|
{
|
|
header('HTTP/1.1 403 Forbidden');
|
|
die('Forbidden');
|
|
}
|
|
|
|
/**
|
|
* Raise 404 Not Found
|
|
*
|
|
* @static
|
|
*/
|
|
public static function _404()
|
|
{
|
|
header('HTTP/1.1 404 Not Found');
|
|
die('Not Found');
|
|
}
|
|
|
|
|
|
/**
|
|
* Compare the external ip address if it is allowed, then returns the result
|
|
*
|
|
* @return bool Returns true if match ip address, otherwise false
|
|
* @static
|
|
*/
|
|
public static function canAccess()
|
|
{
|
|
return in_array($_SERVER['REMOTE_ADDR'], self::$allowIPs);
|
|
}
|
|
|
|
/**
|
|
* Check if office exists
|
|
*
|
|
* @param string @shortname Short Name of office
|
|
* @result bool Returns true if office exists with this name, otherwise false
|
|
* @static
|
|
*/
|
|
public static function hasOfficeName($shortname)
|
|
{
|
|
return isset(self::$offices[$shortname]);
|
|
}
|
|
|
|
/**
|
|
* Gets the office name by givin location name
|
|
*
|
|
* @param int @code The office code
|
|
* @return string Returns the name of the office location
|
|
* @static
|
|
*/
|
|
public static function getOfficeNameByCode($code)
|
|
{
|
|
$result = array_search($code, self::$offices);
|
|
return $result ? $result : 'UNKNOWN';
|
|
}
|
|
|
|
/**
|
|
* Gets the office code by givin name
|
|
*
|
|
* @param string $name Name of the office location
|
|
* @return int Returns the code of the office
|
|
* @static
|
|
*/
|
|
public static function getOfficeNameByShortName($shortname)
|
|
{
|
|
return self::$offices[$shortname];
|
|
}
|
|
|
|
/**
|
|
* Gets the office name by givin location name
|
|
*
|
|
* @param string @shortname The office short name
|
|
* @return string Returns the name of the office location
|
|
*/
|
|
public function getOfficeValueByShortName($shortname)
|
|
{
|
|
$attribute = $this->attributeRepository->get('customer', 'lts_office');
|
|
$options = $attribute->getSource()->getAllOptions(false);
|
|
$name = self::$offices[$shortname] ?? 'Doesn\'t matter';
|
|
foreach ($options as $option) {
|
|
if ($option['label'] == $name) {
|
|
return $option['value'];
|
|
}
|
|
}
|
|
return '';
|
|
}
|
|
} |