/** * Check export controls * Is the user in a country that has access to this tool? * * @param string $exportcontrol Control [us, d1, pu] * @return boolean False if user does NOT have access */ private function _getToolExportControl($exportcontrol) { $exportcontrol = strtolower($exportcontrol); $ip = Request::ip(); $country = \Hubzero\Geocode\Geocode::ipcountry($ip); if (empty($country) && in_array($exportcontrol, array('us', 'd1', 'pu'))) { $this->setError(Lang::txt('COM_TOOLS_ERROR_ACCESS_DENIED_EXPORT_UNKNOWN')); Log::debug("mw::_getToolExportControl({$exportcontrol}) FAILED location export control check"); return false; } if (\Hubzero\Geocode\Geocode::is_e1nation(\Hubzero\Geocode\Geocode::ipcountry($ip))) { $this->setError(Lang::txt('COM_TOOLS_ERROR_ACCESS_DENIED_EXPORT_E1')); Log::debug("mw::_getToolExportControl({$exportcontrol}) FAILED E1 export control check"); return false; } switch ($exportcontrol) { case 'us': if (\Hubzero\Geocode\Geocode::ipcountry($ip) != 'us') { $this->setError(Lang::txt('COM_TOOLS_ERROR_ACCESS_DENIED_EXPORT_USA_ONLY')); Log::debug("mw::_getToolExportControl({$exportcontrol}) FAILED US export control check"); return false; } break; case 'd1': if (\Hubzero\Geocode\Geocode::is_d1nation(\Hubzero\Geocode\Geocode::ipcountry($ip))) { $this->setError(Lang::txt('COM_TOOLS_ERROR_ACCESS_DENIED_EXPORT_LICENSE')); Log::debug("mw::_getToolExportControl({$exportcontrol}) FAILED D1 export control check"); return false; } break; case 'pu': if (!\Hubzero\Geocode\Geocode::is_iplocation($ip, $exportcontrol)) { $this->setError(Lang::txt('COM_TOOLS_ERROR_ACCESS_DENIED_EXPORT_PURDUE_ONLY')); Log::debug("mw::_getToolExportControl({$exportControl}) FAILED PURDUE export control check"); return false; } break; } return true; }
/** * Return a tool export access * * @param $export_control Export control level for tool * * @return BOOL */ public static function getToolExportAccess($export_control) { //instaniate objects $export_access = new stdClass(); $ip = Request::ip(); //get the export control level $export_control = strtolower($export_control); //get the users country based on ip address $country = \Hubzero\Geocode\Geocode::ipcountry($ip); //if we dont know the users location and its a restricted to we have to deny access if (empty($country) && in_array($export_control, array('us', 'd1', 'pu'))) { $export_access->valid = 0; $export_access->error->message = 'This tool may not be accessed from your unknown current location due to export/license restrictions.'; \Log::debug("mw::_getToolExportControl({$export_control}) FAILED location export control check"); return $export_access; } //if the user is in an E1 nation if (\Hubzero\Geocode\Geocode::is_e1nation(\Hubzero\Geocode\Geocode::ipcountry($ip))) { $export_access->valid = 0; $export_access->error->message = 'This tool may not be accessed from your current location due to E1 export/license restrictions.'; \Log::debug("mw::_getToolExportControl({$export_control}) FAILED E1 export control check"); return $export_access; } //run checks depending on the export ac switch ($export_control) { case 'us': if (\Hubzero\Geocode\Geocode::ipcountry($ip) != 'us') { $export_access->valid = 0; $export_access->error->message = 'This tool may only be accessed from within the U.S. due to export/licensing restrictions.'; \Log::debug("mw::_getToolExportControl({$export_control}) FAILED US export control check"); return $export_access; } break; case 'd1': if (\Hubzero\Geocode\Geocode::is_d1nation(\Hubzero\Geocode\Geocode::ipcountry($ip))) { $export_access->valid = 0; $export_access->error->message = 'This tool may not be accessed from your current location due to export/license restrictions.'; \Log::debug("mw::_getToolExportControl({$export_control}) FAILED D1 export control check"); return $export_access; } break; case 'pu': if (!\Hubzero\Geocode\Geocode::is_iplocation($ip, $export_control)) { $export_access->valid = 0; $export_access->error->message = 'This tool may only be accessed by authorized users while on the West Lafayette campus of Purdue University due to license restrictions.'; \Log::debug("mw::_getToolExportControl({$export_control}) FAILED PURDUE export control check"); return $export_access; } break; } //passed all checks $export_access->valid = 1; return $export_access; }