Пример #1
0
 public function hasDatacenterCredential($credential, $useAnd = true)
 {
     if ($this->isSuperAdmin()) {
         return true;
     }
     $p_permtype = $credential[0];
     $p_user_id = $this->getId();
     //$p_cluster_id = $credential[1];
     if (is_array($credential[1])) {
         $p_type_credential = (array) $credential[1];
         if ($p_type_credential['node']) {
             error_log("MYUSER:[INFO]Node id: " . $p_type_credential['node']);
             $dc_c = new Criteria();
             $dc_c->add(EtvaNodePeer::ID, $p_type_credential['node']);
             $node = EtvaNodePeer::doSelectOne($dc_c);
             $p_cluster_id = $node->getClusterId();
         } elseif ($p_type_credential['server']) {
             error_log("MYUSER:[INFO]Server id: " . $p_type_credential['server']);
             $dc_c = new Criteria();
             $dc_c->add(EtvaServerPeer::ID, (int) $p_type_credential['server'], Criteria::EQUAL);
             $server = EtvaServerPeer::doSelectOne($dc_c);
             $p_cluster_id = $server->getClusterId();
         } elseif ($p_type_credential['cluster']) {
             error_log("MYUSER:[INFO]Cluster id: " . $p_type_credential['cluster']);
             $p_cluster_id = (int) $p_type_credential['cluster'];
         } else {
             error_log('MYUSER:[ERROR] hasDatacenterCredential invalid parameters');
             return false;
         }
     } else {
         $p_cluster_id = $credential[1];
     }
     // Check if user has permission
     $c = new Criteria();
     $c->add(EtvaPermissionUserPeer::USER_ID, $p_user_id, Criteria::EQUAL);
     $c->addJoin(EtvaPermissionUserPeer::ETVAPERM_ID, EtvaPermissionPeer::ID);
     $c->add(EtvaPermissionPeer::PERM_TYPE, $p_permtype, Criteria::EQUAL);
     $c->addJoin(EtvaPermissionPeer::ID, EtvaPermissionClusterPeer::ETVAPERM_ID);
     $c->add(EtvaPermissionClusterPeer::CLUSTER_ID, $p_cluster_id);
     //error_log($c->toString());
     $permission = EtvaPermissionUserPeer::doSelect($c);
     if ($permission) {
         return true;
     }
     // Check if user groups have permission
     $grps = $this->getGroups();
     foreach ($grps as $value) {
         foreach ($value->getEtvaPermissionGroups() as $relObj) {
             $perm = $relObj->getEtvaPermission();
             // validates the permission type
             if ($perm->getPermType() == $p_permtype) {
                 // check if user has permission on the cluster
                 foreach ($perm->getEtvaPermissionClusters() as $clusters) {
                     if ($clusters->getClusterId() == $p_cluster_id) {
                         error_log("Permission:  " . $clusters->getClusterId());
                         return true;
                     }
                 }
             }
         }
     }
     // Permission not found
     return false;
 }
Пример #2
0
 public function getEtvaServer(PropelPDO $con = null)
 {
     $criteria = new Criteria();
     $criteria->add(EtvaServerLogicalPeer::LOGICALVOLUME_ID, $this->getId());
     $criteria->addJoin(EtvaServerPeer::ID, EtvaServerLogicalPeer::SERVER_ID);
     return EtvaServerPeer::doSelectOne($criteria, $con);
 }
Пример #3
0
 /**
  * returns json array encoded list of vlans
  * 
  */
 public function executeJsonList(sfWebRequest $request)
 {
     $isAjax = $request->isXmlHttpRequest();
     if (!$isAjax) {
         return $this->redirect('@homepage');
     }
     $p_cluster_id = $this->getRequestParameter('id');
     $p_level = $this->getRequestParameter('level');
     if ($p_level) {
         if (!$p_cluster_id) {
             $error_msg = 'No cluster id defined.';
             $error = array('success' => false, 'error' => $error_msg, 'info' => $error_msg);
             return $error;
         }
         if ($p_level == 'node') {
             $dc_c = new Criteria();
             //convert node id in cluster id
             $dc_c->add(EtvaNodePeer::ID, $p_cluster_id);
             $node = EtvaNodePeer::doSelectOne($dc_c);
             $p_cluster_id = $node->getClusterId();
         } elseif ($p_level == 'server') {
             $dc_c = new Criteria();
             //convert server id in cluster id
             $dc_c->add(EtvaServerPeer::ID, $p_cluster_id, Criteria::EQUAL);
             $server = EtvaServerPeer::doSelectOne($dc_c);
             $p_cluster_id = $server->getClusterId();
         } elseif ($p_level == 'cluster') {
             //do nothing
         } else {
             error_log('NETWORK:[ERROR] executejsonlist invalid parameters');
         }
     } elseif (!$p_cluster_id) {
         $defaultCluster = EtvaClusterPeer::retrieveDefaultCluster();
         $p_cluster_id = $defaultCluster->getId();
     }
     $c = new Criteria();
     $c->add(EtvaVlanPeer::CLUSTER_ID, $p_cluster_id, Criteria::EQUAL);
     $vlan_nodes = EtvaVlanPeer::doSelect($c);
     $list = array();
     foreach ($vlan_nodes as $vlan) {
         $list[] = $vlan->toArray(BasePeer::TYPE_FIELDNAME);
     }
     $untagged_vlan = EtvaVlanPeer::retrieveUntagged($p_cluser_id);
     $hasUntagged = 0;
     if ($untagged_vlan) {
         $hasUntagged = 1;
     }
     $result = array('total' => count($list), 'data' => $list, 'hasUntagged' => $hasUntagged);
     $result = json_encode($result);
     if (sfConfig::get('sf_environment') == 'soap') {
         $soap_result = array(success => true, 'total' => count($list), 'response' => $list);
         return json_encode($soap_result);
     }
     $this->getResponse()->setHttpHeader('Content-type', 'application/json');
     return $this->renderText($result);
 }