Exemple #1
0
 /**
  * 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;
 }
Exemple #2
0
 /**
  * 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;
 }