/**
  * Returns true if and only if the assertion conditions are met
  *
  * This method is passed the ACL, Role, Resource, and privilege to which
  * the authorization query applies. If the $role, $resource, or $privilege
  * parameters are null, it means that the query applies to all Roles,
  * Resources, or privileges, respectively.
  *
  * @param  Zend_Acl                    $acl
  * @param  Zend_Acl_Role_Interface     $role
  * @param  Zend_Acl_Resource_Interface $resource
  * @param  string                      $privilege
  * @return boolean
  */
 public function assert(Zend_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null, $privilege = null)
 {
     // We need specific objects to check against each other
     if (NULL === $role) {
         return false;
     }
     // Ensure we're handled User models
     if (!$role instanceof UserModel) {
         throw new Exception('Role must be an instance of UserModel');
     }
     // Get the organization
     $orgService = \Application\Service\OrgService::getInstance();
     $org = $orgService->load($role->getOrganizationId());
     if ($org->getType() != OrgCustomerModel::ORG_TYPE) {
         $org = $orgService->getParentByType($org, OrgCustomerModel::ORG_TYPE);
     }
     if ($org && !is_null($org->getSupplementaryServicesId())) {
         // Check if the customer has supplementary services configured
         // with application originated SMS option activated
         $supplSrv = \Application\Service\SupplServicesService::getInstance();
         $services = $supplSrv->load($org->getSupplementaryServicesId());
         if ($services && $services->getApplicationOriginatedSms() == SupplServicesModel::ST_ACTIVATED) {
             return true;
         }
     }
     throw new Exception('Role must have applicationOriginatedSms activated');
 }
 public function getSupplementaryService($context)
 {
     $service = SupplServicesService::getInstance();
     if (isset($context[$this->_supplServiceIdVarInContext])) {
         $item = $service->load($context[$this->_supplServiceIdVarInContext]);
         return $item;
     }
 }
 public function getSupplementaryService($context)
 {
     $user = \App::getUserLogged();
     $org = $user->getOrganization();
     if (!$org->supplementaryServicesId) {
         $orgService = OrgService::getInstance();
         $org = $orgService->getParentByType($org, OrgCustomerModel::ORG_TYPE);
     }
     if ($org) {
         $item = SupplServicesService::getInstance()->load($org->supplementaryServicesId);
         return $item;
     }
 }
 public function __construct($options = null)
 {
     $this->_spec = array('validators' => array('sms' => array('NotEmpty' => array('breakChainOnFailure' => true, 'type' => \Zend_Validate_NotEmpty::NULL), 'isBoolean' => array('breakChainOnFailure' => true)), 'msisdnList' => array('NotEmptyIfField' => array('breakChainOnFailure' => true, 'field' => 'sms', 'value' => true), 'Array' => array('breakChainOnFailure' => true, 'distinct' => true, 'validators' => array('NotEmpty' => array('breakChainOnFailure' => true), 'StringLength' => array('max' => 15, 'encoding' => "UTF-8", 'breakChainOnFailure' => true)))), 'email' => array('NotEmpty' => array('breakChainOnFailure' => true, 'type' => \Zend_Validate_NotEmpty::NULL), 'isBoolean' => array('breakChainOnFailure' => true)), 'emailList' => array('NotEmptyIfField' => array('breakChainOnFailure' => true, 'field' => 'email', 'value' => true, 'type' => \Zend_Validate_NotEmpty::EMPTY_ARRAY), 'Array' => array('breakChainOnFailure' => true, 'distinct' => true, 'validators' => array('EmailAddress' => array('mx' => false, 'breakChainOnFailure' => true)))), 'snmp' => array('NotEmpty' => array('breakChainOnFailure' => true, 'type' => \Zend_Validate_NotEmpty::NULL), 'isBoolean' => array('breakChainOnFailure' => true))));
     $org = \App::getOrgUserLogged();
     if ($org->getType() != OrgCustomerModel::ORG_TYPE) {
         $org = OrgService::getInstance()->getParentByType($org, OrgCustomerModel::ORG_TYPE);
     }
     if ($org && !is_null($org->getSupplementaryServicesId())) {
         $services = SupplServicesService::getInstance()->load($org->getSupplementaryServicesId());
         if (!$services || $services->getApplicationOriginatedSms() != SupplServicesModel::ST_ACTIVATED) {
             $this->_spec['validators']['sms']['Identical'] = array('token' => false, 'messageTemplates' => array(\Zend_Validate_Identical::NOT_SAME => "Application originated sms service not activated"));
         }
     }
     parent::__construct($options);
 }
 /**
  * Returns true if and only if the assertion conditions are met
  *
  * This method is passed the ACL, Role, Resource, and privilege to which
  * the authorization query applies. If the $role, $resource, or $privilege
  * parameters are null, it means that the query applies to all Roles,
  * Resources, or privileges, respectively.
  *
  * @param  Zend_Acl                    $acl
  * @param  Zend_Acl_Role_Interface     $role
  * @param  Zend_Acl_Resource_Interface $resource
  * @param  string                      $privilege
  * @return boolean
  */
 public function assert(Zend_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null, $privilege = null)
 {
     // We need specific objects to check against each other
     if (NULL === $role) {
         return false;
     }
     // Ensure we're handled User models
     if (!$role instanceof UserModel) {
         throw new Exception('Role must be an instance of UserModel');
     }
     if (!$resource instanceof SimModel) {
         throw new Exception('Resource must be an instance of SimModel');
     }
     // Get the organization
     $orgService = \Application\Service\OrgService::getInstance();
     if ($orgService->getTypeById($role->getOrganizationId()) == OrgServiceProviderModel::ORG_TYPE) {
         $org = $orgService->load($resource->customerId);
     } else {
         $org = $orgService->load($role->getOrganizationId());
     }
     if ($org->getType() != OrgCustomerModel::ORG_TYPE) {
         $org = $orgService->getParentByType($org, OrgCustomerModel::ORG_TYPE);
     }
     if ($org && !is_null($org->getSupplementaryServicesId())) {
         // Check if the customer has supplementary services configured
         // with application originated SMS option activated
         $supplSrv = \Application\Service\SupplServicesService::getInstance();
         try {
             if ($orgService->getTypeById($role->getOrganizationId()) == OrgAggregatorModel::ORG_TYPE) {
                 $services = $supplSrv->load($org->getSupplementaryServicesId(), $org);
             } else {
                 $services = $supplSrv->load($org->getSupplementaryServicesId());
             }
         } catch (\Exception $e) {
             \App::log()->warn($e);
             return False;
         }
         if ($services && $services->advancedSupervision == SupplServicesModel::ST_ACTIVATED) {
             return true;
         }
     }
     return false;
 }
 public function isValid($value, $content = null)
 {
     $this->_messages = array();
     $service = SupplServicesService::getInstance();
     try {
         $item = $service->load($value);
     } catch (\Application\Exceptions\NotFoundException $e) {
         $item = null;
     } catch (\Application\Exceptions\GlobalServiceException $e) {
         $message = $this->_createMessage(self::ERROR_ON_CONNECTION, $value);
         $this->_messages[self::ERROR_ON_CONNECTION] = $message;
         return false;
     }
     if (!isset($item)) {
         $message = $this->_createMessage(self::NO_SUPPL_SERVICE, $value);
         $this->_messages[self::NO_SUPPL_SERVICE] = $message;
         return false;
     }
     return true;
 }
 public function isValid($value, $context = null)
 {
     $this->_messages = array();
     $service = SupplServicesService::getInstance();
     $item = $service->load($value);
     if ($item->applicationOriginatedSms != SupplServicesModel::ST_ACTIVATED) {
         $message = $this->_createMessage(self::NO_ACTIVATED_SUPPL_SERVICE, $value);
         $this->_messages[self::NO_ACTIVATED_SUPPL_SERVICE] = $message;
         return false;
     }
     if ($item->readyForMultipleSmsOa === false) {
         $message = $this->_createMessage(self::INACTIVE_OCS, $context['msisdn']);
         $this->_messages[self::INACTIVE_OCS] = $message;
         return false;
     }
     if (!$item->customerId) {
         $message = $this->_createMessage(self::NO_CUSTOMER_SUPPL_SERVICE, $context['msisdn']);
         $this->_messages[self::NO_CUSTOMER_SUPPL_SERVICE] = $message;
         return false;
     }
     if (!$item->applicationOriginatedSmsMsisdn) {
         $message = $this->_createMessage(self::NOT_DEFAULT_CONFIGURED);
         $this->_messages[self::NOT_DEFAULT_CONFIGURED] = $message;
         return false;
     }
     if ($item->published != SupplServicesModel::STATUS_PUBLISHED) {
         $message = $this->_createMessage(self::NOT_PUBLISHED, $value);
         $this->_messages[self::NOT_PUBLISHED] = $message;
         return false;
     }
     if ($item->additionalMsisdn && count($item->additionalMsisdn) >= $this->_maxMsisdns - 1) {
         $message = $this->_createMessage(self::MAX_ADDITIONAL_MSISDNS);
         $this->_messages[self::MAX_ADDITIONAL_MSISDNS] = $message;
         return false;
     }
     return true;
 }
 public function meAction()
 {
     $this->view->user = \App::getUserLogged();
     $this->_helper->filterNotAllowedFields('read_field', $this->view->user);
     if ($this->getRequest()->getParam('organization', false)) {
         $this->view->organization = $this->view->user->getOrganization();
         $this->_helper->filterNotAllowedFields('read_field', $this->view->organization);
         $orgService = OrgService::getInstance();
         $orgService->getOrgConfig($this->view->organization);
         $sp = $orgService->getParentByType($this->view->organization, OrgServiceProviderModel::ORG_TYPE);
         if ($sp && isset($sp->isEnabler)) {
             $this->view->organization->alwaysOnRoaming = !$sp->isEnabler;
         }
         if ($this->view->organization instanceof OrgCustomerModel && isset($this->view->organization->supplementaryServicesId)) {
             try {
                 $supplService = SupplServicesService::getInstance()->load($this->view->organization->supplementaryServicesId);
                 if ($supplService) {
                     try {
                         $this->_helper->allowed('read', $supplService);
                         $this->_helper->filterNotAllowedFields('read_field', $supplService);
                         $this->view->supplService = $supplService;
                     } catch (PermissionException $e) {
                     }
                 }
             } catch (\Exception $e) {
                 \App::log()->warn($e);
             }
         }
     }
     if (($namespace = $this->_getParam('permissions')) || ($namespace = $this->getRequest()->getHeader('Realm'))) {
         if ($namespace == 1) {
             $namespace = null;
         }
         $this->view->permissions = \Core\Service\PermissionService::getInstance()->load(\App::getUserLogged()->getRoleId(), $namespace);
     }
 }
 public function testRepeatedNumberExtra()
 {
     $old_srv = \Application\Service\SupplServicesService::getInstance();
     $data = array('applicationOriginatedSms' => SupplServicesModel::ST_ACTIVATED, 'published' => SupplServicesModel::STATUS_PUBLISHED, 'customerId' => 1, 'applicationOriginatedSmsMsisdn' => '346777888212', 'additionalMsisdn' => array(array('msisdn' => '346777888012', 'description' => 'Previous', 'supplServicesId' => '1')));
     \Application\Service\SupplServicesService::setInstance(new FakeService($data));
     $msisdnData = array("supplServicesId" => "1", "msisdn" => "346777888012", "description" => "Test descrip");
     $smsMsisdn = new SmsMsisdnModel($msisdnData);
     $this->assertFalse($this->_validator->isValid($smsMsisdn));
     $this->assertEquals(array('msisdn' => array('numberRepeated' => "346777888012 number is repeated")), $this->_validator->getMessages());
     \Application\Service\SupplServicesService::setInstance($old_srv);
 }
 protected function _checkCustomerOrg($org)
 {
     if ($org->getType() == OrgCustomerModel::ORG_TYPE) {
         if (is_null($org->getSupplementaryServicesId())) {
             throw new \Application\Exceptions\ForbiddenException('Organization ' . $org->getId() . ' does not have supplementary services assigned. User cannot login.', PermissionCodes::AUTH_ORG_NO_SUPPL_SERVICE);
         }
         // Check if the customer has supplementary services configured
         // with self-management option activated
         $services = SupplServicesService::getInstance()->load($org->getSupplementaryServicesId());
         if (!$services || $services->getSelfManagement() != SupplServicesModel::ST_ACTIVATED) {
             throw new \Application\Exceptions\ForbiddenException('Self-management service unavailable for your organization (' . $org->getId() . '); please contact your Service Provider.', PermissionCodes::AUTH_NO_SELF_MANAGEMENT);
         }
     }
 }
 public function init()
 {
     $this->_ssSrv = \Application\Service\SupplServicesService::getInstance();
     $this->_orgSrv = \Application\Service\OrgService::getInstance();
 }
 public function init()
 {
     $this->srv = SupplServicesService::getInstance();
     $this->enumSrv = Application\Service\EnumeratedService::getInstance();
 }